net/iavf: fix memory leak in large VF
authorTing Xu <ting.xu@intel.com>
Mon, 14 Dec 2020 06:04:10 +0000 (14:04 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 8 Jan 2021 15:03:05 +0000 (16:03 +0100)
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 <ting.xu@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
drivers/net/iavf/iavf_vchnl.c

index 33d03af..c17ae06 100644 (file)
@@ -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;
 }