From 395d41fbb1dd2faa21e143865ce12c195ec8194b Mon Sep 17 00:00:00 2001 From: Qiming Chen Date: Fri, 10 Sep 2021 11:12:49 +0800 Subject: [PATCH] common/iavf: fix ARQ resource leak In the iavf_init_arq function, if an exception occurs in the iavf_config_arq_regs function, and the previously applied ARQ (Admin Receive Queue) bufs resource is released. This patch maintains the same modification as the iavf_init_asq function to roll back resources. Fixes: 87aca6d8d8a4 ("net/iavf/base: fix command buffer memory leak") Cc: stable@dpdk.org Signed-off-by: Qiming Chen Acked-by: Qi Zhang --- drivers/common/iavf/iavf_adminq.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/common/iavf/iavf_adminq.c b/drivers/common/iavf/iavf_adminq.c index 0bf5af0cbe..9c36e8908e 100644 --- a/drivers/common/iavf/iavf_adminq.c +++ b/drivers/common/iavf/iavf_adminq.c @@ -417,7 +417,7 @@ enum iavf_status iavf_init_arq(struct iavf_hw *hw) /* initialize base registers */ ret_code = iavf_config_arq_regs(hw); if (ret_code != IAVF_SUCCESS) - goto init_adminq_free_rings; + goto init_config_regs; /* success! */ hw->aq.arq.count = hw->aq.num_arq_entries; @@ -425,6 +425,10 @@ enum iavf_status iavf_init_arq(struct iavf_hw *hw) init_adminq_free_rings: iavf_free_adminq_arq(hw); + return ret_code; + +init_config_regs: + iavf_free_arq_bufs(hw); init_adminq_exit: return ret_code;