Matthew Wilcox wrote on Wed, Jul 11, 2018: > On Wed, Jul 11, 2018 at 03:33:13PM +0200, Dominique Martinet wrote: > > Well this appears to work but P9_NOTAG being '(u16)(~0)' I'm not too > > confident with P9_NOTAG + 1. . . it doesn't look like it's overflowing > > before the cast on my laptop but is that guaranteed? > > By my understanding of n1256.pdf ... this falls under 6.3.1.8 ("Usual > arithmetic conversions"). We have a u16 and an int. Therefore this > rule applies: > > Otherwise, if the type of the operand with signed integer type can > represent all of the values of the type of the operand with unsigned > integer type, then the operand with unsigned integer type is converted > to the type of the operand with signed integer type. Thanks for checking, that'll work then. > > I do not see any call to idr_destroy, is that OK? > > Yes, that's fine. It used to be (back in 2013) that one had to call > idr_destroy() in order to free the preallocated idr data structures. > Now it's a no-op if called on an empty IDR, and I would expect that both > IDRs are empty at the time that it comes to unloading the module (and if > they aren't, we probably have bigger problems than a small memory leak). > Some users like to assert that the IDR is empty; most do not go to that > extent of defensive programming. Ok, I agree we're not there yet. Just comments nitpicks, then :) -- Dominique Martinet