| From 688e718a3b83ca605d0a6e83f8e61f74411387ea Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 16 Jul 2020 11:50:38 +0800 |
| Subject: net: smc91x: Fix possible memory leak in smc_drv_probe() |
| |
| From: Wang Hai <wanghai38@huawei.com> |
| |
| [ Upstream commit bca9749b1aa23d964d3ab930938af66dbf887f15 ] |
| |
| If try_toggle_control_gpio() failed in smc_drv_probe(), free_netdev(ndev) |
| should be called to free the ndev created earlier. Otherwise, a memleak |
| will occur. |
| |
| Fixes: 7d2911c43815 ("net: smc91x: Fix gpios for device tree based booting") |
| Reported-by: Hulk Robot <hulkci@huawei.com> |
| Signed-off-by: Wang Hai <wanghai38@huawei.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/smsc/smc91x.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/smsc/smc91x.c b/drivers/net/ethernet/smsc/smc91x.c |
| index b0c72167badec..3c221ca2cc125 100644 |
| --- a/drivers/net/ethernet/smsc/smc91x.c |
| +++ b/drivers/net/ethernet/smsc/smc91x.c |
| @@ -2294,7 +2294,7 @@ static int smc_drv_probe(struct platform_device *pdev) |
| ret = try_toggle_control_gpio(&pdev->dev, &lp->power_gpio, |
| "power", 0, 0, 100); |
| if (ret) |
| - return ret; |
| + goto out_free_netdev; |
| |
| /* |
| * Optional reset GPIO configured? Minimum 100 ns reset needed |
| @@ -2303,7 +2303,7 @@ static int smc_drv_probe(struct platform_device *pdev) |
| ret = try_toggle_control_gpio(&pdev->dev, &lp->reset_gpio, |
| "reset", 0, 0, 100); |
| if (ret) |
| - return ret; |
| + goto out_free_netdev; |
| |
| /* |
| * Need to wait for optional EEPROM to load, max 750 us according |
| -- |
| 2.25.1 |
| |