* [Intel-wired-lan] [PATCH iwl-net v2 0/2] iavf: fix two memory leaks
@ 2026-07-15 8:25 ` xuanqiang.luo
0 siblings, 0 replies; 10+ messages in thread
From: xuanqiang.luo @ 2026-07-15 8:25 UTC (permalink / raw)
To: Tony Nguyen, Przemek Kitszel, Jagielski, Jedrzej, 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.
---
Changes:
v2:
Patch1:
- Move the ASQ command buffer cleanup into iavf_free_adminq_asq() to
pair it with iavf_alloc_adminq_asq_ring(). (Suggested by Jedrzej.)
v1: https://lore.kernel.org/all/20260715061131.34420-1-xuanqiang.luo@linux.dev/
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] 10+ messages in thread* [PATCH iwl-net v2 0/2] iavf: fix two memory leaks @ 2026-07-15 8:25 ` xuanqiang.luo 0 siblings, 0 replies; 10+ messages in thread From: xuanqiang.luo @ 2026-07-15 8:25 UTC (permalink / raw) To: Tony Nguyen, Przemek Kitszel, Jagielski, Jedrzej, 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. --- Changes: v2: Patch1: - Move the ASQ command buffer cleanup into iavf_free_adminq_asq() to pair it with iavf_alloc_adminq_asq_ring(). (Suggested by Jedrzej.) v1: https://lore.kernel.org/all/20260715061131.34420-1-xuanqiang.luo@linux.dev/ 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] 10+ messages in thread
* [Intel-wired-lan] [PATCH iwl-net v2 1/2] iavf: fix ASQ command buffer leak on init failure 2026-07-15 8:25 ` xuanqiang.luo @ 2026-07-15 8:25 ` xuanqiang.luo -1 siblings, 0 replies; 10+ messages in thread From: xuanqiang.luo @ 2026-07-15 8:25 UTC (permalink / raw) To: Tony Nguyen, Przemek Kitszel, Jagielski, Jedrzej, 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..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 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH iwl-net v2 1/2] iavf: fix ASQ command buffer leak on init failure @ 2026-07-15 8:25 ` xuanqiang.luo 0 siblings, 0 replies; 10+ messages in thread From: xuanqiang.luo @ 2026-07-15 8:25 UTC (permalink / raw) To: Tony Nguyen, Przemek Kitszel, Jagielski, Jedrzej, 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..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 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-net v2 1/2] iavf: fix ASQ command buffer leak on init failure 2026-07-15 8:25 ` xuanqiang.luo @ 2026-07-15 9:28 ` Jagielski, Jedrzej -1 siblings, 0 replies; 10+ messages in thread From: Jagielski, Jedrzej @ 2026-07-15 9:28 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 10:26 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..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 Looks fine, thanks! Reviewed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com> One note for the future - please be aware that there is minimal time period to be waited before resubmitting new patch revision, which is at least 24h for netdev/IWL mailing lists ^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH iwl-net v2 1/2] iavf: fix ASQ command buffer leak on init failure @ 2026-07-15 9:28 ` Jagielski, Jedrzej 0 siblings, 0 replies; 10+ messages in thread From: Jagielski, Jedrzej @ 2026-07-15 9:28 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 10:26 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..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 Looks fine, thanks! Reviewed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com> One note for the future - please be aware that there is minimal time period to be waited before resubmitting new patch revision, which is at least 24h for netdev/IWL mailing lists ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH iwl-net v2 1/2] iavf: fix ASQ command buffer leak on init failure 2026-07-15 9:28 ` Jagielski, Jedrzej @ 2026-07-15 9:40 ` luoxuanqiang -1 siblings, 0 replies; 10+ messages in thread From: luoxuanqiang @ 2026-07-15 9:40 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 17:28, Jagielski, Jedrzej 写道: > From: xuanqiang.luo@linux.dev <xuanqiang.luo@linux.dev> > Sent: Wednesday, July 15, 2026 10:26 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..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 > Looks fine, thanks! > > Reviewed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com> > > One note for the future - please be aware that there is minimal time period to be > waited before resubmitting new patch revision, which is at least 24h for netdev/IWL > mailing lists Thanks for the reminder! I also received a notification from netdev-bot, and I'll keep this in mind for future revisions. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-net v2 1/2] iavf: fix ASQ command buffer leak on init failure @ 2026-07-15 9:40 ` luoxuanqiang 0 siblings, 0 replies; 10+ messages in thread From: luoxuanqiang @ 2026-07-15 9:40 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 17:28, Jagielski, Jedrzej 写道: > From: xuanqiang.luo@linux.dev <xuanqiang.luo@linux.dev> > Sent: Wednesday, July 15, 2026 10:26 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..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 > Looks fine, thanks! > > Reviewed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com> > > One note for the future - please be aware that there is minimal time period to be > waited before resubmitting new patch revision, which is at least 24h for netdev/IWL > mailing lists Thanks for the reminder! I also received a notification from netdev-bot, and I'll keep this in mind for future revisions. ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Intel-wired-lan] [PATCH iwl-net v2 2/2] iavf: fix QoS capabilities memory leak 2026-07-15 8:25 ` xuanqiang.luo @ 2026-07-15 8:25 ` xuanqiang.luo -1 siblings, 0 replies; 10+ messages in thread From: xuanqiang.luo @ 2026-07-15 8:25 UTC (permalink / raw) To: Tony Nguyen, Przemek Kitszel, Jagielski, Jedrzej, 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 Reviewed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com> 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] 10+ messages in thread
* [PATCH iwl-net v2 2/2] iavf: fix QoS capabilities memory leak @ 2026-07-15 8:25 ` xuanqiang.luo 0 siblings, 0 replies; 10+ messages in thread From: xuanqiang.luo @ 2026-07-15 8:25 UTC (permalink / raw) To: Tony Nguyen, Przemek Kitszel, Jagielski, Jedrzej, 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 Reviewed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com> 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] 10+ messages in thread
end of thread, other threads:[~2026-07-15 9:41 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-07-15 8:25 [Intel-wired-lan] [PATCH iwl-net v2 0/2] iavf: fix two memory leaks xuanqiang.luo 2026-07-15 8:25 ` xuanqiang.luo 2026-07-15 8:25 ` [Intel-wired-lan] [PATCH iwl-net v2 1/2] iavf: fix ASQ command buffer leak on init failure xuanqiang.luo 2026-07-15 8:25 ` xuanqiang.luo 2026-07-15 9:28 ` [Intel-wired-lan] " Jagielski, Jedrzej 2026-07-15 9:28 ` Jagielski, Jedrzej 2026-07-15 9:40 ` luoxuanqiang 2026-07-15 9:40 ` [Intel-wired-lan] " luoxuanqiang 2026-07-15 8:25 ` [Intel-wired-lan] [PATCH iwl-net v2 2/2] iavf: fix QoS capabilities memory leak xuanqiang.luo 2026-07-15 8:25 ` xuanqiang.luo
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.