On Tue, Dec 12, 2017 at 02:33:52PM +0000, David Laight wrote: > From: Niklas Cassel > > find_first_zero_bit()'s parameter 'size' is defined in bits, > > not in bytes. > > > > Calling find_first_zero_bit() with the wrong size unit > > will lead to insidious bugs. > > > > Fix all uses of find_first_zero_bit() called with > > sizeof() as size argument in drivers/pci. > ... > > Isn't all this code just using the wrong function. > Shouldn't they be using ffz() (or whatever it is called) > to find the first zero in a numeric argument rather that > find_first_zero_bit() which is intended for large bitmaps. > > Perhaps the type for 'large bitmaps' should be: > struct { > unsigned long bitmap_bits[0]; > } bitmap; > rather than unsigned long[]. David, I think you are referring to patch 3, which is a fix for the current find_first_zero_bit() usage. The point is, I think that struct pci_epc_group.function_num_map should actually be converted to a bitmap (and therefore using find_first_zero_bit() on it is the right API); patch 3 is just a fix for current code. Unless you think patch 3 is technically wrong I would go ahead with the series as-is for fixes and we will refactor struct pci_epc_group.function_num_map usage to a proper bitmap for the upcoming merge window. Lorenzo