aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Zhengchao Shao <shaozhengchao@huawei.com> 2023-04-18 14:54:50 +0800
committerGravatar Paolo Abeni <pabeni@redhat.com> 2023-04-20 15:39:15 +0200
commite315e7b83a22043bffee450437d7089ef373cbf6 (patch)
tree8d770201027a68182f04c0bdfa81e346434e0651
parentMerge branch 'another-crack-at-a-handshake-upcall-mechanism' (diff)
downloadlinux-e315e7b83a22043bffee450437d7089ef373cbf6.tar.gz
linux-e315e7b83a22043bffee450437d7089ef373cbf6.tar.bz2
linux-e315e7b83a22043bffee450437d7089ef373cbf6.zip
net: libwx: fix memory leak in wx_setup_rx_resources
When wx_alloc_page_pool() failed in wx_setup_rx_resources(), it doesn't release DMA buffer. Add dma_free_coherent() in the error path to release the DMA buffer. Fixes: 850b971110b2 ("net: libwx: Allocate Rx and Tx resources") Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com> Reviewed-by: Simon Horman <simon.horman@corigine.com> Link: https://lore.kernel.org/r/20230418065450.2268522-1-shaozhengchao@huawei.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-rw-r--r--drivers/net/ethernet/wangxun/libwx/wx_lib.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/ethernet/wangxun/libwx/wx_lib.c b/drivers/net/ethernet/wangxun/libwx/wx_lib.c
index eb89a274083e..1e8d8b7b0c62 100644
--- a/drivers/net/ethernet/wangxun/libwx/wx_lib.c
+++ b/drivers/net/ethernet/wangxun/libwx/wx_lib.c
@@ -1798,10 +1798,13 @@ static int wx_setup_rx_resources(struct wx_ring *rx_ring)
ret = wx_alloc_page_pool(rx_ring);
if (ret < 0) {
dev_err(rx_ring->dev, "Page pool creation failed: %d\n", ret);
- goto err;
+ goto err_desc;
}
return 0;
+
+err_desc:
+ dma_free_coherent(dev, rx_ring->size, rx_ring->desc, rx_ring->dma);
err:
kvfree(rx_ring->rx_buffer_info);
rx_ring->rx_buffer_info = NULL;