Intel-Wired-Lan Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-wired-lan] [PATCH iwl-net v1 0/2] iavf: fix two memory leaks
@ 2026-07-15  6:11 xuanqiang.luo
  2026-07-15  6:11 ` [Intel-wired-lan] [PATCH iwl-net v1 1/2] iavf: fix ASQ command buffer leak on init failure xuanqiang.luo
  2026-07-15  6:11 ` [Intel-wired-lan] [PATCH iwl-net v1 2/2] iavf: fix QoS capabilities memory leak xuanqiang.luo
  0 siblings, 2 replies; 6+ messages in thread
From: xuanqiang.luo @ 2026-07-15  6:11 UTC (permalink / raw)
  To: Tony Nguyen, Przemek Kitszel, intel-wired-lan
  Cc: Andrew Lunn, Mitch Williams, Greg Rose, Sudheer Mogilappagari,
	netdev, Xuanqiang Luo

From: Xuanqiang Luo <luoxuanqiang@kylinos.cn>

This series fixes two memory leaks found by inspection in iavf. Release
the ASQ command buffer when initialization fails and the QoS capabilities
buffer when the device is removed.

Xuanqiang Luo (2):
  iavf: fix ASQ command buffer leak on init failure
  iavf: fix QoS capabilities memory leak

 drivers/net/ethernet/intel/iavf/iavf_adminq.c | 1 +
 drivers/net/ethernet/intel/iavf/iavf_main.c   | 1 +
 2 files changed, 2 insertions(+)


base-commit: 58717b2a1365d06c8c64b72aa948541b53fe31eb
-- 
2.43.0

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Intel-wired-lan] [PATCH iwl-net v1 1/2] iavf: fix ASQ command buffer leak on init failure
  2026-07-15  6:11 [Intel-wired-lan] [PATCH iwl-net v1 0/2] iavf: fix two memory leaks xuanqiang.luo
@ 2026-07-15  6:11 ` xuanqiang.luo
  2026-07-15  7:24   ` Jagielski, Jedrzej
  2026-07-15  6:11 ` [Intel-wired-lan] [PATCH iwl-net v1 2/2] iavf: fix QoS capabilities memory leak xuanqiang.luo
  1 sibling, 1 reply; 6+ messages in thread
From: xuanqiang.luo @ 2026-07-15  6:11 UTC (permalink / raw)
  To: Tony Nguyen, Przemek Kitszel, intel-wired-lan
  Cc: Andrew Lunn, Mitch Williams, Greg Rose, Sudheer Mogilappagari,
	netdev, Xuanqiang Luo, stable

From: Xuanqiang Luo <luoxuanqiang@kylinos.cn>

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: stable@vger.kernel.org
Signed-off-by: Xuanqiang Luo <luoxuanqiang@kylinos.cn>
---
 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..82a32f8e78c12 100644
--- a/drivers/net/ethernet/intel/iavf/iavf_adminq.c
+++ b/drivers/net/ethernet/intel/iavf/iavf_adminq.c
@@ -346,6 +346,7 @@ static enum iavf_status iavf_init_asq(struct iavf_hw *hw)
 	iavf_free_virt_mem(hw, &hw->aq.asq.dma_head);
 
 init_adminq_free_rings:
+	iavf_free_virt_mem(hw, &hw->aq.asq.cmd_buf);
 	iavf_free_adminq_asq(hw);
 
 init_adminq_exit:
-- 
2.43.0

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Intel-wired-lan] [PATCH iwl-net v1 2/2] iavf: fix QoS capabilities memory leak
  2026-07-15  6:11 [Intel-wired-lan] [PATCH iwl-net v1 0/2] iavf: fix two memory leaks xuanqiang.luo
  2026-07-15  6:11 ` [Intel-wired-lan] [PATCH iwl-net v1 1/2] iavf: fix ASQ command buffer leak on init failure xuanqiang.luo
@ 2026-07-15  6:11 ` xuanqiang.luo
  2026-07-15  7:24   ` Jagielski, Jedrzej
  1 sibling, 1 reply; 6+ messages in thread
From: xuanqiang.luo @ 2026-07-15  6:11 UTC (permalink / raw)
  To: Tony Nguyen, Przemek Kitszel, intel-wired-lan
  Cc: Andrew Lunn, Mitch Williams, Greg Rose, Sudheer Mogilappagari,
	netdev, Xuanqiang Luo, stable

From: Xuanqiang Luo <luoxuanqiang@kylinos.cn>

Commit 4c1a457cb8b0 ("iavf: add support to exchange qos capabilities")
allocates adapter->qos_caps during probe, but iavf_remove() does not
free it. This leaks the allocation whenever an iavf device is removed.

Free adapter->qos_caps in iavf_remove().

Fixes: 4c1a457cb8b0 ("iavf: add support to exchange qos capabilities")
Cc: stable@vger.kernel.org
Signed-off-by: Xuanqiang Luo <luoxuanqiang@kylinos.cn>
---
 drivers/net/ethernet/intel/iavf/iavf_main.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c
index 29b8403a066bc..c7f69a9040588 100644
--- a/drivers/net/ethernet/intel/iavf/iavf_main.c
+++ b/drivers/net/ethernet/intel/iavf/iavf_main.c
@@ -5589,6 +5589,7 @@ static void iavf_remove(struct pci_dev *pdev)
 	iounmap(hw->hw_addr);
 	pci_release_regions(pdev);
 	kfree(adapter->vf_res);
+	kfree(adapter->qos_caps);
 	spin_lock_bh(&adapter->mac_vlan_list_lock);
 	/* If we got removed before an up/down sequence, we've got a filter
 	 * hanging out there that we need to get rid of.
-- 
2.43.0

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [Intel-wired-lan] [PATCH iwl-net v1 1/2] iavf: fix ASQ command buffer leak on init failure
  2026-07-15  6:11 ` [Intel-wired-lan] [PATCH iwl-net v1 1/2] iavf: fix ASQ command buffer leak on init failure xuanqiang.luo
@ 2026-07-15  7:24   ` Jagielski, Jedrzej
  2026-07-15  8:30     ` luoxuanqiang
  0 siblings, 1 reply; 6+ messages in thread
From: Jagielski, Jedrzej @ 2026-07-15  7:24 UTC (permalink / raw)
  To: xuanqiang.luo@linux.dev, Nguyen, Anthony L, Kitszel, Przemyslaw,
	intel-wired-lan@lists.osuosl.org
  Cc: Andrew Lunn, Mitch Williams, Greg Rose, Sudheer Mogilappagari,
	netdev@vger.kernel.org, Xuanqiang Luo, stable@vger.kernel.org

From: xuanqiang.luo@linux.dev <xuanqiang.luo@linux.dev> 
Sent: Wednesday, July 15, 2026 8:12 AM

>From: Xuanqiang Luo <luoxuanqiang@kylinos.cn>
>
>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: stable@vger.kernel.org
>Signed-off-by: Xuanqiang Luo <luoxuanqiang@kylinos.cn>
>---
> 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..82a32f8e78c12 100644
>--- a/drivers/net/ethernet/intel/iavf/iavf_adminq.c
>+++ b/drivers/net/ethernet/intel/iavf/iavf_adminq.c
>@@ -346,6 +346,7 @@ static enum iavf_status iavf_init_asq(struct iavf_hw *hw)
> 	iavf_free_virt_mem(hw, &hw->aq.asq.dma_head);
> 
> init_adminq_free_rings:
>+	iavf_free_virt_mem(hw, &hw->aq.asq.cmd_buf);

Hi Xuanqiang
much thanks for the patches!

how about moving that line directly into iavf_free_adminq_asq()?
then free func would be paired 1:1 with alloc func 

> 	iavf_free_adminq_asq(hw);
> 
> init_adminq_exit:
>-- 
>2.43.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Intel-wired-lan] [PATCH iwl-net v1 2/2] iavf: fix QoS capabilities memory leak
  2026-07-15  6:11 ` [Intel-wired-lan] [PATCH iwl-net v1 2/2] iavf: fix QoS capabilities memory leak xuanqiang.luo
@ 2026-07-15  7:24   ` Jagielski, Jedrzej
  0 siblings, 0 replies; 6+ messages in thread
From: Jagielski, Jedrzej @ 2026-07-15  7:24 UTC (permalink / raw)
  To: xuanqiang.luo@linux.dev, Nguyen, Anthony L, Kitszel, Przemyslaw,
	intel-wired-lan@lists.osuosl.org
  Cc: Andrew Lunn, Mitch Williams, Greg Rose, Sudheer Mogilappagari,
	netdev@vger.kernel.org, Xuanqiang Luo, stable@vger.kernel.org

From: xuanqiang.luo@linux.dev <xuanqiang.luo@linux.dev> 
Sent: Wednesday, July 15, 2026 8:12 AM

>From: Xuanqiang Luo <luoxuanqiang@kylinos.cn>
>
>Commit 4c1a457cb8b0 ("iavf: add support to exchange qos capabilities")
>allocates adapter->qos_caps during probe, but iavf_remove() does not
>free it. This leaks the allocation whenever an iavf device is removed.
>
>Free adapter->qos_caps in iavf_remove().
>
>Fixes: 4c1a457cb8b0 ("iavf: add support to exchange qos capabilities")
>Cc: stable@vger.kernel.org
>Signed-off-by: Xuanqiang Luo <luoxuanqiang@kylinos.cn>

Reviewed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Intel-wired-lan] [PATCH iwl-net v1 1/2] iavf: fix ASQ command buffer leak on init failure
  2026-07-15  7:24   ` Jagielski, Jedrzej
@ 2026-07-15  8:30     ` luoxuanqiang
  0 siblings, 0 replies; 6+ messages in thread
From: luoxuanqiang @ 2026-07-15  8:30 UTC (permalink / raw)
  To: Jagielski, Jedrzej, Nguyen, Anthony L, Kitszel, Przemyslaw,
	intel-wired-lan@lists.osuosl.org
  Cc: Andrew Lunn, Mitch Williams, Greg Rose, Sudheer Mogilappagari,
	netdev@vger.kernel.org, Xuanqiang Luo, stable@vger.kernel.org


在 2026/7/15 15:24, Jagielski, Jedrzej 写道:
> From: xuanqiang.luo@linux.dev <xuanqiang.luo@linux.dev>
> Sent: Wednesday, July 15, 2026 8:12 AM
>
>> From: Xuanqiang Luo <luoxuanqiang@kylinos.cn>
>>
>> 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: stable@vger.kernel.org
>> Signed-off-by: Xuanqiang Luo <luoxuanqiang@kylinos.cn>
>> ---
>> 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..82a32f8e78c12 100644
>> --- a/drivers/net/ethernet/intel/iavf/iavf_adminq.c
>> +++ b/drivers/net/ethernet/intel/iavf/iavf_adminq.c
>> @@ -346,6 +346,7 @@ static enum iavf_status iavf_init_asq(struct iavf_hw *hw)
>> 	iavf_free_virt_mem(hw, &hw->aq.asq.dma_head);
>>
>> init_adminq_free_rings:
>> +	iavf_free_virt_mem(hw, &hw->aq.asq.cmd_buf);
> Hi Xuanqiang
> much thanks for the patches!
>
> how about moving that line directly into iavf_free_adminq_asq()?
> then free func would be paired 1:1 with alloc func

Thanks for the suggestion!

I've addressed it and sent out v2.

>
>> 	iavf_free_adminq_asq(hw);
>>
>> init_adminq_exit:
>> -- 
>> 2.43.0

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-07-15  8:31 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-15  6:11 [Intel-wired-lan] [PATCH iwl-net v1 0/2] iavf: fix two memory leaks xuanqiang.luo
2026-07-15  6:11 ` [Intel-wired-lan] [PATCH iwl-net v1 1/2] iavf: fix ASQ command buffer leak on init failure xuanqiang.luo
2026-07-15  7:24   ` Jagielski, Jedrzej
2026-07-15  8:30     ` luoxuanqiang
2026-07-15  6:11 ` [Intel-wired-lan] [PATCH iwl-net v1 2/2] iavf: fix QoS capabilities memory leak xuanqiang.luo
2026-07-15  7:24   ` Jagielski, Jedrzej

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox