diff options
author | Christophe JAILLET <christophe.jaillet@wanadoo.fr> | 2020-04-27 09:18:03 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-04-27 22:07:46 +0300 |
commit | 10e3cc180e64385edc9890c6855acf5ed9ca1339 (patch) | |
tree | d2aad80e3002edbeb9fd189b3818a2380ff685bf | |
parent | 4b5b71f770e2edefbfe74203777264bfe6a9927c (diff) | |
download | linux-10e3cc180e64385edc9890c6855acf5ed9ca1339.tar.xz |
net/sonic: Fix a resource leak in an error handling path in 'jazz_sonic_probe()'
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>
-rw-r--r-- | drivers/net/ethernet/natsemi/jazzsonic.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/ethernet/natsemi/jazzsonic.c b/drivers/net/ethernet/natsemi/jazzsonic.c index bfa0c0d39600..8b018ed37b1b 100644 --- a/drivers/net/ethernet/natsemi/jazzsonic.c +++ b/drivers/net/ethernet/natsemi/jazzsonic.c @@ -208,11 +208,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); |