PCI: endpoint: use ffz() instead of find_first_zero_bit()
Subsystems (2)
PATCH 1/1 PCI: endpoint: use ffz() instead of find_first_zero_bit()
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.
--- drivers/pci/endpoint/pci-ep-cfs.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/pci/endpoint/pci-ep-cfs.c +1 -2
@@ -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;
Signature · 1 line
2.14.2
From: Niklas Cassel
Quoted 21 lines
Sent: 17 November 2017 09:43 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()withffz(), sinceffz()only works on a single 'unsigned long' and therefore does not need a size argument.Signed-off-by Niklas Cassel <[email protected]>--- drivers/pci/endpoint/pci-ep-cfs.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)drivers/pci/endpoint/pci-ep-cfs.c +0
-0
drivers/pci/endpoint/pci-ep-cfs.c static int pci_epc_epf_link(struct config_item *epc_item, · line 113
Quoted 8 lines
drivers/pci/endpoint/pci-ep-cfs.c +1
-2@@ -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;
Is set_bit() now setting the correct bit?
I'd guess that:
epc_group->function_num_map |= 1ul << func_no;
would be more accurate?
David