PCI: endpoint: Cast the page number to phys_addr_t
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.mikhak@sifive.com> Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
This commit is contained in:
		
							parent
							
								
									54ecb8f702
								
							
						
					
					
						commit
						daee4f4e42
					
				| @ -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); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user