In the iavf_init_arq function, if an exception occurs in the iavf_config_arq_regs function, and the previously applied arq 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: sta...@dpdk.org Signed-off-by: Qiming Chen <chenqiming_hua...@163.com> --- 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; -- 2.30.1.windows.1