| From 714b8012c7e37c469f43b5fe4768da9ceab1cf8c Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 27 Apr 2020 08:18:03 +0200 |
| Subject: net/sonic: Fix a resource leak in an error handling path in |
| 'jazz_sonic_probe()' |
| |
| From: Christophe JAILLET <christophe.jaillet@wanadoo.fr> |
| |
| [ Upstream commit 10e3cc180e64385edc9890c6855acf5ed9ca1339 ] |
| |
| A call to 'dma_alloc_coherent()' is hidden in 'sonic_alloc_descriptors()', |
| called from 'sonic_probe1()'. |
| |
| This is correctly freed in the remove function, but not in the error |
| handling path of the probe function. |
| Fix it and add the missing 'dma_free_coherent()' call. |
| |
| While at it, rename a label in order to be slightly more informative. |
| |
| Fixes: efcce839360f ("[PATCH] macsonic/jazzsonic network drivers update") |
| Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/natsemi/jazzsonic.c | 6 ++++-- |
| 1 file changed, 4 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/natsemi/jazzsonic.c b/drivers/net/ethernet/natsemi/jazzsonic.c |
| index 51fa82b429a3c..40970352d2082 100644 |
| --- a/drivers/net/ethernet/natsemi/jazzsonic.c |
| +++ b/drivers/net/ethernet/natsemi/jazzsonic.c |
| @@ -235,11 +235,13 @@ static int jazz_sonic_probe(struct platform_device *pdev) |
| |
| err = register_netdev(dev); |
| if (err) |
| - goto out1; |
| + goto undo_probe1; |
| |
| return 0; |
| |
| -out1: |
| +undo_probe1: |
| + dma_free_coherent(lp->device, SIZEOF_SONIC_DESC * SONIC_BUS_SCALE(lp->dma_bitmode), |
| + lp->descriptors, lp->descriptors_laddr); |
| release_mem_region(dev->base_addr, SONIC_MEM_SIZE); |
| out: |
| free_netdev(dev); |
| -- |
| 2.20.1 |
| |