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 this by using replacing find_first_zero_bit() with ffz(), since ffz() only works on a single 'unsigned long' and therefore does not need a size argument. Signed-off-by: Niklas Cassel <niklas.cassel@xxxxxxxx> --- drivers/pci/endpoint/pci-ep-cfs.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/pci/endpoint/pci-ep-cfs.c b/drivers/pci/endpoint/pci-ep-cfs.c index 4f74386c1ced..96b984685640 100644 --- a/drivers/pci/endpoint/pci-ep-cfs.c +++ b/drivers/pci/endpoint/pci-ep-cfs.c @@ -108,8 +108,7 @@ static int pci_epc_epf_link(struct config_item *epc_item, if (ret) goto err_add_epf; - func_no = find_first_zero_bit(&epc_group->function_num_map, - sizeof(epc_group->function_num_map)); + func_no = ffz(epc_group->function_num_map); set_bit(func_no, &epc_group->function_num_map); epf->func_no = func_no; -- 2.14.2