From 20aa3a899ce0203d179cc5ea3bc5688193116a25 Mon Sep 17 00:00:00 2001 From: Ting Xu Date: Mon, 14 Dec 2020 14:04:10 +0800 Subject: [PATCH] net/iavf: fix memory leak in large VF This patch fixed the issue that the memory allocated for structure virtchnl_del_ena_dis_queues is not released at the end of the functions iavf_enable_queues_lv, iavf_disable_queues_lv and iavf_switch_queue_lv. Fixes: 9cf9c02bf6ee ("net/iavf: add enable/disable queues for large VF") Cc: stable@dpdk.org Signed-off-by: Ting Xu Acked-by: Qi Zhang --- drivers/net/iavf/iavf_vchnl.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/drivers/net/iavf/iavf_vchnl.c b/drivers/net/iavf/iavf_vchnl.c index 33d03af653..c17ae06227 100644 --- a/drivers/net/iavf/iavf_vchnl.c +++ b/drivers/net/iavf/iavf_vchnl.c @@ -644,12 +644,12 @@ iavf_enable_queues_lv(struct iavf_adapter *adapter) args.out_buffer = vf->aq_resp; args.out_size = IAVF_AQ_BUF_SZ; err = iavf_execute_vf_cmd(adapter, &args); - if (err) { + if (err) PMD_DRV_LOG(ERR, "Failed to execute command of OP_ENABLE_QUEUES_V2"); - return err; - } - return 0; + + rte_free(queue_select); + return err; } int @@ -688,12 +688,12 @@ iavf_disable_queues_lv(struct iavf_adapter *adapter) args.out_buffer = vf->aq_resp; args.out_size = IAVF_AQ_BUF_SZ; err = iavf_execute_vf_cmd(adapter, &args); - if (err) { + if (err) PMD_DRV_LOG(ERR, "Failed to execute command of OP_DISABLE_QUEUES_V2"); - return err; - } - return 0; + + rte_free(queue_select); + return err; } int @@ -737,6 +737,8 @@ iavf_switch_queue_lv(struct iavf_adapter *adapter, uint16_t qid, if (err) PMD_DRV_LOG(ERR, "Failed to execute command of %s", on ? "OP_ENABLE_QUEUES_V2" : "OP_DISABLE_QUEUES_V2"); + + rte_free(queue_select); return err; } -- 2.20.1