Re: [PATCH] octeon_ep: Add missing check for ioremap
From: Jiasheng Jiang <hidden>
Date: 2023-06-15 03:25:17
Also in:
lkml
From: Jiasheng Jiang <hidden>
Date: 2023-06-15 03:25:17
Also in:
lkml
On Thu, 15 Jun 2023 03:53:04 +0800 Jakub Kicinski wrote:
On Wed, 14 Jun 2023 11:23:47 +0800 Jiasheng Jiang wrote:quoted
@@ -981,6 +981,9 @@ int octep_device_setup(struct octep_device *oct) oct->mmio[i].hw_addr = ioremap(pci_resource_start(oct->pdev, i * 2), pci_resource_len(oct->pdev, i * 2)); + if (!oct->mmio[i].hw_addr) + goto unsupported_dev; + oct->mmio[i].mapped = 1; }@@ -1015,8 +1018,8 @@ int octep_device_setup(struct octep_device *oct) return 0; unsupported_dev: - for (i = 0; i < OCTEP_MMIO_REGIONS; i++) - iounmap(oct->mmio[i].hw_addr); + for (j = 0; j < i; j++) + iounmap(oct->mmio[j].hw_addr);Assuming @i is not changed by the rest of the function is a bit fragile. Better way of handling this situation is: unsupported_dev: i = OCTEP_MMIO_REGIONS; unmap_prev: while (i--) iounmap(oct->mmio[i].hw_addr); and jump to unmap_prev
Fine, I will submit a v2 to fix it. Thanks, Jiasheng