Re: [Intel-wired-lan] [PATCH iwl-net v2 1/2] iavf: fix ASQ command buffer leak on init failure
"Loktionov, Aleksandr" <[email protected]> Thu, 23 Jul 2026 09:23:46 +0000
| Newsgroups | org.osuosl.intel-wired-lan,org.kernel.vger.netdev,org.kernel.vger.stable |
|---|---|
| Message-ID | <IA3PR11MB89869EF82E36C967CB0FEE21E5C02@IA3PR11MB8986.namprd11.prod.outlook.com> |
> -----Original Message----- > From: Intel-wired-lan <[email protected]> On Behalf > Of [email protected] > Sent: Wednesday, July 15, 2026 10:26 AM > To: Nguyen, Anthony L <[email protected]>; Kitszel, > Przemyslaw <[email protected]>; Jagielski; Jagielski, > Jedrzej <[email protected]>; intel-wired- > [email protected] > Cc: Andrew Lunn <[email protected]>; Mitch Williams > <[email protected]>; Greg Rose <[email protected]>; > Sudheer Mogilappagari <[email protected]>; > [email protected]; Xuanqiang Luo <[email protected]>; > [email protected] > Subject: [Intel-wired-lan] [PATCH iwl-net v2 1/2] iavf: fix ASQ > command buffer leak on init failure > > From: Xuanqiang Luo <[email protected]> > > iavf_alloc_adminq_asq_ring() allocates cmd_buf before the remaining > ASQ resources. If iavf_alloc_asq_bufs() or iavf_config_asq_regs() > fails, the unwind path elides cmd_buf while freeing the other > allocations. > > The ASQ count is not set until initialization succeeds, so the > shutdown path cannot reclaim the buffer. Free cmd_buf in the common > unwind path. > > Fixes: d358aa9a7a2d ("i40evf: init code and hardware support") > Cc: [email protected] > Signed-off-by: Xuanqiang Luo <[email protected]> > --- > drivers/net/ethernet/intel/iavf/iavf_adminq.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/net/ethernet/intel/iavf/iavf_adminq.c > b/drivers/net/ethernet/intel/iavf/iavf_adminq.c > index 6937b7dd44cbb..40f76f9507f4b 100644 > --- a/drivers/net/ethernet/intel/iavf/iavf_adminq.c > +++ b/drivers/net/ethernet/intel/iavf/iavf_adminq.c > @@ -60,6 +60,7 @@ static enum iavf_status > iavf_alloc_adminq_arq_ring(struct iavf_hw *hw) > **/ > static 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); } > > -- > 2.43.0 Reviewed-by: Aleksandr Loktionov <[email protected]>