On 2019-12-18 10:00 a.m., Qian Cai wrote: > The commit a7d06153eea2 ("PCI: Fix pci_add_dma_alias() bitmask size") > introduced a compilation warning and a potential infinite loop because > it is no longer possible to be self-terminated as u8 is always less than > 256, > > In file included from ./include/linux/kernel.h:12, > from ./include/asm-generic/bug.h:19, > from ./arch/x86/include/asm/bug.h:83, > from ./include/linux/bug.h:5, > from ./include/linux/jump_label.h:250, > from ./arch/x86/include/asm/string_64.h:6, > from ./arch/x86/include/asm/string.h:5, > from ./include/linux/string.h:20, > from ./include/linux/uuid.h:12, > from ./include/linux/mod_devicetable.h:13, > from ./include/linux/pci.h:27, > from drivers/pci/search.c:11: > drivers/pci/search.c: In function 'pci_for_each_dma_alias': > ./include/linux/bitops.h:30:13: warning: comparison is always true due > to limited range of data type [-Wtype-limits] > (bit) < (size); \ > ^ > drivers/pci/search.c:46:3: note: in expansion of macro 'for_each_set_bit' > for_each_set_bit(devfn, pdev->dma_alias_mask, MAX_NR_DEVFNS) { > > Fixed it by using u16 for "devfn" in this occasion. > > Fixes: a7d06153eea2 ("PCI: Fix pci_add_dma_alias() bitmask size") > Signed-off-by: Qian Cai <cai@xxxxxx> Makes sense to me, Reviewed-by: Logan Gunthorpe <logang@xxxxxxxxxxxx> > --- > drivers/pci/search.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/pci/search.c b/drivers/pci/search.c > index 9e4dfae47252..42bc44d0e681 100644 > --- a/drivers/pci/search.c > +++ b/drivers/pci/search.c > @@ -41,7 +41,7 @@ int pci_for_each_dma_alias(struct pci_dev *pdev, > * DMA, iterate over that too. > */ > if (unlikely(pdev->dma_alias_mask)) { > - u8 devfn; > + u16 devfn; > > for_each_set_bit(devfn, pdev->dma_alias_mask, MAX_NR_DEVFNS) { > ret = fn(pdev, PCI_DEVID(pdev->bus->number, devfn), >