On Wed, Oct 09, 2019 at 10:06:56AM -0700, Alan Mikhak wrote: > From: Alan Mikhak <alan.mik...@sifive.com> > > Modify pci_epc_mem_alloc_addr() to cast the variable 'pageno' > from type 'int' to 'phys_addr_t' before shifting left. This > cast is needed to avoid treating bit 31 of 'pageno' as the > sign bit which would otherwise get sign-extended to produce > a negative value. When added to the base address of PCI memory > space, the negative value would produce an invalid physical > address which falls before the start of the PCI memory space. > > Signed-off-by: Alan Mikhak <alan.mik...@sifive.com> > Acked-by: Kishon Vijay Abraham I <kis...@ti.com> > --- > drivers/pci/endpoint/pci-epc-mem.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-)
Applied to pci/endpoint, thanks. Lorenzo > diff --git a/drivers/pci/endpoint/pci-epc-mem.c > b/drivers/pci/endpoint/pci-epc-mem.c > index 2bf8bd1f0563..d2b174ce15de 100644 > --- a/drivers/pci/endpoint/pci-epc-mem.c > +++ b/drivers/pci/endpoint/pci-epc-mem.c > @@ -134,7 +134,7 @@ void __iomem *pci_epc_mem_alloc_addr(struct pci_epc *epc, > if (pageno < 0) > return NULL; > > - *phys_addr = mem->phys_base + (pageno << page_shift); > + *phys_addr = mem->phys_base + ((phys_addr_t)pageno << page_shift); > virt_addr = ioremap(*phys_addr, size); > if (!virt_addr) > bitmap_release_region(mem->bitmap, pageno, order); > -- > 2.7.4 >