Message ID | 9DD82D05-6B9E-4AF5-9A3C-D459B75C0089@arista.com |
---|---|
State | New |
Headers | show |
Series | [v5,1/3] PCI: Fix off by one in dma_alias_mask allocation size | expand |
On 2019-11-29 10:56 a.m., James Sewart wrote: > The number of possible devfns is 256 so the size of the bitmap for > allocations should be U8_MAX+1. > > Signed-off-by: James Sewart <jamessewart@arista.com> Looks good to me. Thanks! For the whole series: Reviewed-by: Logan Gunthorpe <logang@deltatee.com> > --- > drivers/pci/pci.c | 2 +- > drivers/pci/search.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index a97e2571a527..0a4449a30ace 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(U8_MAX+1, 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..b3633af1743b 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, U8_MAX+1) { > ret = fn(pdev, PCI_DEVID(pdev->bus->number, devfn), > data); > if (ret) >
On Fri, Nov 29, 2019 at 05:56:19PM +0000, James Sewart wrote: > The number of possible devfns is 256 so the size of the bitmap for > allocations should be U8_MAX+1. > > Signed-off-by: James Sewart <jamessewart@arista.com> > --- > drivers/pci/pci.c | 2 +- > drivers/pci/search.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index a97e2571a527..0a4449a30ace 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(U8_MAX+1, GFP_KERNEL); Missing whitespaces around the "+". > - for_each_set_bit(devfn, pdev->dma_alias_mask, U8_MAX) { > + for_each_set_bit(devfn, pdev->dma_alias_mask, U8_MAX+1) { Same here.
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index a97e2571a527..0a4449a30ace 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(U8_MAX+1, 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..b3633af1743b 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, U8_MAX+1) { ret = fn(pdev, PCI_DEVID(pdev->bus->number, devfn), data); if (ret)
The number of possible devfns is 256 so the size of the bitmap for allocations should be U8_MAX+1. Signed-off-by: James Sewart <jamessewart@arista.com> --- drivers/pci/pci.c | 2 +- drivers/pci/search.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)