Re: [PATCH] octeon_ep: Add missing check for ioremap

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help