Commit 28e2188e authored by Uwe Kleine-König's avatar Uwe Kleine-König

net/fec: release mem_region requested in probe in error path and remove

Reported-by: default avatarLothar Waßmann <LW@KARO-electronics.de>
Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
parent 8a73b0bc
...@@ -1377,8 +1377,10 @@ fec_probe(struct platform_device *pdev) ...@@ -1377,8 +1377,10 @@ fec_probe(struct platform_device *pdev)
/* Init network device */ /* Init network device */
ndev = alloc_etherdev(sizeof(struct fec_enet_private)); ndev = alloc_etherdev(sizeof(struct fec_enet_private));
if (!ndev) if (!ndev) {
return -ENOMEM; ret = -ENOMEM;
goto failed_alloc_etherdev;
}
SET_NETDEV_DEV(ndev, &pdev->dev); SET_NETDEV_DEV(ndev, &pdev->dev);
...@@ -1456,6 +1458,8 @@ fec_probe(struct platform_device *pdev) ...@@ -1456,6 +1458,8 @@ fec_probe(struct platform_device *pdev)
iounmap((void __iomem *)ndev->base_addr); iounmap((void __iomem *)ndev->base_addr);
failed_ioremap: failed_ioremap:
free_netdev(ndev); free_netdev(ndev);
failed_alloc_etherdev:
release_mem_region(r->start, resource_size(r));
return ret; return ret;
} }
...@@ -1465,6 +1469,7 @@ fec_drv_remove(struct platform_device *pdev) ...@@ -1465,6 +1469,7 @@ fec_drv_remove(struct platform_device *pdev)
{ {
struct net_device *ndev = platform_get_drvdata(pdev); struct net_device *ndev = platform_get_drvdata(pdev);
struct fec_enet_private *fep = netdev_priv(ndev); struct fec_enet_private *fep = netdev_priv(ndev);
struct resource *r;
platform_set_drvdata(pdev, NULL); platform_set_drvdata(pdev, NULL);
...@@ -1475,6 +1480,11 @@ fec_drv_remove(struct platform_device *pdev) ...@@ -1475,6 +1480,11 @@ fec_drv_remove(struct platform_device *pdev)
iounmap((void __iomem *)ndev->base_addr); iounmap((void __iomem *)ndev->base_addr);
unregister_netdev(ndev); unregister_netdev(ndev);
free_netdev(ndev); free_netdev(ndev);
r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
BUG_ON(!r);
release_mem_region(r->start, resource_size(r));
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment