[dpdk-stable] [dpdk-dev] [PATCH v2] net/netvsc: fix txq leak in error path

Long Li longli at microsoft.com
Fri Oct 9 05:53:30 CEST 2020


>Subject: [dpdk-dev] [PATCH v2] net/netvsc: fix txq leak in error path
>
>From: Yunjian Wang <wangyunjian at huawei.com>
>
>In hn_dev_tx_queue_setup() allocated memory for txq, we don't free it
>when error happens and it will lead to memory leak.
>
>We can check for tx_free_thresh at the beginning of the function to fix it,
>before calling txq = rte_zmalloc_socket().
>
>Fixes: cc0251813277 ("net/netvsc: split send buffers from Tx descriptors")
>Cc: stable at dpdk.org
>
>Signed-off-by: Yunjian Wang <wangyunjian at huawei.com>

Acked-by: Long Li <longli at microsoft.com>
>---
>v2:
>  fix code styles suggested by Long Li
>---
> drivers/net/netvsc/hn_rxtx.c | 19 +++++++++----------
> 1 file changed, 9 insertions(+), 10 deletions(-)
>
>diff --git a/drivers/net/netvsc/hn_rxtx.c b/drivers/net/netvsc/hn_rxtx.c
>index 65f1abae5..5d59db513 100644
>--- a/drivers/net/netvsc/hn_rxtx.c
>+++ b/drivers/net/netvsc/hn_rxtx.c
>@@ -252,16 +252,6 @@ hn_dev_tx_queue_setup(struct rte_eth_dev *dev,
>
> 	PMD_INIT_FUNC_TRACE();
>
>-	txq = rte_zmalloc_socket("HN_TXQ", sizeof(*txq),
>RTE_CACHE_LINE_SIZE,
>-				 socket_id);
>-	if (!txq)
>-		return -ENOMEM;
>-
>-	txq->hv = hv;
>-	txq->chan = hv->channels[queue_idx];
>-	txq->port_id = dev->data->port_id;
>-	txq->queue_id = queue_idx;
>-
> 	tx_free_thresh = tx_conf->tx_free_thresh;
> 	if (tx_free_thresh == 0)
> 		tx_free_thresh = RTE_MIN(nb_desc / 4, @@ -276,6 +266,15
>@@ hn_dev_tx_queue_setup(struct rte_eth_dev *dev,
> 		return -EINVAL;
> 	}
>
>+	txq = rte_zmalloc_socket("HN_TXQ", sizeof(*txq),
>RTE_CACHE_LINE_SIZE,
>+				 socket_id);
>+	if (!txq)
>+		return -ENOMEM;
>+
>+	txq->hv = hv;
>+	txq->chan = hv->channels[queue_idx];
>+	txq->port_id = dev->data->port_id;
>+	txq->queue_id = queue_idx;
> 	txq->free_thresh = tx_free_thresh;
>
> 	snprintf(name, sizeof(name),
>--
>2.23.0



More information about the stable mailing list