Message ID | 910070E3-7964-4549-B77F-EC7FC6144503@arista.com |
---|---|
State | New |
Delegated to: | Bjorn Helgaas |
Headers | show |
Series | [v6,1/3] PCI: Fix off by one in dma_alias_mask allocation size | expand |
[+cc Joerg] On Tue, Dec 03, 2019 at 03:43:22PM +0000, James Sewart wrote: > The number of possible devfns is 256, add def and correct uses. > > Reviewed-by: Logan Gunthorpe <logang@deltatee.com> > Signed-off-by: James Sewart <jamessewart@arista.com> I applied these three patches to pci/virtualization for v5.6, thanks! I moved the MAX_NR_DEVFNS from include/linux/pci.h to drivers/pci/pci.h since nobody outside drivers/pci needs it. > --- > drivers/pci/pci.c | 2 +- > drivers/pci/search.c | 2 +- > include/linux/pci.h | 2 ++ > 3 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index a97e2571a527..d3c83248f3ce 100644 > --- a/drivers/pci/pci.c > +++ b/drivers/pci/pci.c > @@ -5876,7 +5876,7 @@ int pci_set_vga_state(struct pci_dev *dev, bool decode, > void pci_add_dma_alias(struct pci_dev *dev, u8 devfn) > { > if (!dev->dma_alias_mask) > - dev->dma_alias_mask = bitmap_zalloc(U8_MAX, GFP_KERNEL); > + dev->dma_alias_mask = bitmap_zalloc(MAX_NR_DEVFNS, GFP_KERNEL); > if (!dev->dma_alias_mask) { > pci_warn(dev, "Unable to allocate DMA alias mask\n"); > return; > diff --git a/drivers/pci/search.c b/drivers/pci/search.c > index bade14002fd8..9e4dfae47252 100644 > --- a/drivers/pci/search.c > +++ b/drivers/pci/search.c > @@ -43,7 +43,7 @@ int pci_for_each_dma_alias(struct pci_dev *pdev, > if (unlikely(pdev->dma_alias_mask)) { > u8 devfn; > > - for_each_set_bit(devfn, pdev->dma_alias_mask, U8_MAX) { > + for_each_set_bit(devfn, pdev->dma_alias_mask, MAX_NR_DEVFNS) { > ret = fn(pdev, PCI_DEVID(pdev->bus->number, devfn), > data); > if (ret) > diff --git a/include/linux/pci.h b/include/linux/pci.h > index 1a6cf19eac2d..6481da29d667 100644 > --- a/include/linux/pci.h > +++ b/include/linux/pci.h > @@ -57,6 +57,8 @@ > #define PCI_DEVID(bus, devfn) ((((u16)(bus)) << 8) | (devfn)) > /* return bus from PCI devid = ((u16)bus_number) << 8) | devfn */ > #define PCI_BUS_NUM(x) (((x) >> 8) & 0xff) > +/* Number of possible devfns. devfns can be from 0.0 to 1f.7 inclusive */ > +#define MAX_NR_DEVFNS 256 > > /* pci_slot represents a physical slot */ > struct pci_slot { > -- > 2.24.0 > >
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index a97e2571a527..d3c83248f3ce 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -5876,7 +5876,7 @@ int pci_set_vga_state(struct pci_dev *dev, bool decode, void pci_add_dma_alias(struct pci_dev *dev, u8 devfn) { if (!dev->dma_alias_mask) - dev->dma_alias_mask = bitmap_zalloc(U8_MAX, GFP_KERNEL); + dev->dma_alias_mask = bitmap_zalloc(MAX_NR_DEVFNS, GFP_KERNEL); if (!dev->dma_alias_mask) { pci_warn(dev, "Unable to allocate DMA alias mask\n"); return; diff --git a/drivers/pci/search.c b/drivers/pci/search.c index bade14002fd8..9e4dfae47252 100644 --- a/drivers/pci/search.c +++ b/drivers/pci/search.c @@ -43,7 +43,7 @@ int pci_for_each_dma_alias(struct pci_dev *pdev, if (unlikely(pdev->dma_alias_mask)) { u8 devfn; - for_each_set_bit(devfn, pdev->dma_alias_mask, U8_MAX) { + for_each_set_bit(devfn, pdev->dma_alias_mask, MAX_NR_DEVFNS) { ret = fn(pdev, PCI_DEVID(pdev->bus->number, devfn), data); if (ret) diff --git a/include/linux/pci.h b/include/linux/pci.h index 1a6cf19eac2d..6481da29d667 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -57,6 +57,8 @@ #define PCI_DEVID(bus, devfn) ((((u16)(bus)) << 8) | (devfn)) /* return bus from PCI devid = ((u16)bus_number) << 8) | devfn */ #define PCI_BUS_NUM(x) (((x) >> 8) & 0xff) +/* Number of possible devfns. devfns can be from 0.0 to 1f.7 inclusive */ +#define MAX_NR_DEVFNS 256 /* pci_slot represents a physical slot */ struct pci_slot {