net/iavf/base: fix command buffer memory leak
Allocated resources were not freed in the event of failure in
iavf_init_asq function. This patch gracefully handles all failures.
Fixes: e5b2a9e957
("net/avf/base: add base code for avf PMD")
Cc: stable@dpdk.org
Signed-off-by: Pandi Kumar Maharajan <pandi.maharajan@intel.com>
Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Qiming Yang <qiming.yang@intel.com>
This commit is contained in:
parent
10ae640514
commit
87aca6d8d8
@ -82,6 +82,7 @@ enum iavf_status iavf_alloc_adminq_arq_ring(struct iavf_hw *hw)
|
||||
**/
|
||||
void iavf_free_adminq_asq(struct iavf_hw *hw)
|
||||
{
|
||||
iavf_free_virt_mem(hw, &hw->aq.asq.cmd_buf);
|
||||
iavf_free_dma_mem(hw, &hw->aq.asq.desc_buf);
|
||||
}
|
||||
|
||||
@ -353,7 +354,7 @@ enum iavf_status iavf_init_asq(struct iavf_hw *hw)
|
||||
/* initialize base registers */
|
||||
ret_code = iavf_config_asq_regs(hw);
|
||||
if (ret_code != IAVF_SUCCESS)
|
||||
goto init_adminq_free_rings;
|
||||
goto init_config_regs;
|
||||
|
||||
/* success! */
|
||||
hw->aq.asq.count = hw->aq.num_asq_entries;
|
||||
@ -361,6 +362,10 @@ enum iavf_status iavf_init_asq(struct iavf_hw *hw)
|
||||
|
||||
init_adminq_free_rings:
|
||||
iavf_free_adminq_asq(hw);
|
||||
return ret_code;
|
||||
|
||||
init_config_regs:
|
||||
iavf_free_asq_bufs(hw);
|
||||
|
||||
init_adminq_exit:
|
||||
return ret_code;
|
||||
|
Loading…
Reference in New Issue
Block a user