* [PATCH net] e1000: fix memory leak in e1000_probe()
@ 2026-06-07 14:57 Dawei Feng
2026-06-10 8:29 ` [Intel-wired-lan] " Ruinskiy, Dima
0 siblings, 1 reply; 2+ messages in thread
From: Dawei Feng @ 2026-06-07 14:57 UTC (permalink / raw)
To: Tony Nguyen
Cc: Przemek Kitszel, Andrew Lunn, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Dirk Brandewie, intel-wired-lan,
netdev, linux-kernel, jianhao.xu, Dawei Feng, stable, Zilin Guan
In the e1000_probe() path, e1000_sw_init() allocates adapter->tx_ring and
adapter->rx_ring. If the subsequent CE4100-specific MDIO BAR mapping
fails, the error handling jumps past the ring cleanup code, leaking both
allocations.
Fix this leak by moving the err_mdio_ioremap label above the ring
deallocation logic. This guarantees the proper release of these resources
and prevents the memory leak.
The bug was first flagged by an experimental analysis tool we are
developing for kernel memory-management bugs while analyzing
v6.13-rc1. The tool is still under development and is not yet publicly
available. Manual inspection confirms that the bug is still
present in v7.1-rc6.
An x86_64 allyesconfig build showed no new warnings. As we do not have a
CE4100 reference platform to test with, no runtime testing was able to
be performed.
Fixes: 5377a4160bb65 ("e1000: Add support for the CE4100 reference platform")
Cc: stable@vger.kernel.org
Signed-off-by: Zilin Guan <zilin@seu.edu.cn>
Signed-off-by: Dawei Feng <dawei.feng@seu.edu.cn>
---
drivers/net/ethernet/intel/e1000/e1000_main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
index 9b09eb144b81..d7f5c6f16142 100644
--- a/drivers/net/ethernet/intel/e1000/e1000_main.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
@@ -1222,11 +1222,11 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if (hw->flash_address)
iounmap(hw->flash_address);
+err_mdio_ioremap:
kfree(adapter->tx_ring);
kfree(adapter->rx_ring);
err_dma:
err_sw_init:
-err_mdio_ioremap:
iounmap(hw->ce4100_gbe_mdio_base_virt);
iounmap(hw->hw_addr);
err_ioremap:
--
2.34.1
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Intel-wired-lan] [PATCH net] e1000: fix memory leak in e1000_probe()
2026-06-07 14:57 [PATCH net] e1000: fix memory leak in e1000_probe() Dawei Feng
@ 2026-06-10 8:29 ` Ruinskiy, Dima
0 siblings, 0 replies; 2+ messages in thread
From: Ruinskiy, Dima @ 2026-06-10 8:29 UTC (permalink / raw)
To: Dawei Feng, Tony Nguyen
Cc: Przemek Kitszel, Andrew Lunn, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Dirk Brandewie, intel-wired-lan,
netdev, linux-kernel, jianhao.xu, stable, Zilin Guan
On 07/06/2026 17:57, Dawei Feng wrote:
> In the e1000_probe() path, e1000_sw_init() allocates adapter->tx_ring and
> adapter->rx_ring. If the subsequent CE4100-specific MDIO BAR mapping
> fails, the error handling jumps past the ring cleanup code, leaking both
> allocations.
>
> Fix this leak by moving the err_mdio_ioremap label above the ring
> deallocation logic. This guarantees the proper release of these resources
> and prevents the memory leak.
>
> The bug was first flagged by an experimental analysis tool we are
> developing for kernel memory-management bugs while analyzing
> v6.13-rc1. The tool is still under development and is not yet publicly
> available. Manual inspection confirms that the bug is still
> present in v7.1-rc6.
>
> An x86_64 allyesconfig build showed no new warnings. As we do not have a
> CE4100 reference platform to test with, no runtime testing was able to
> be performed.
>
> Fixes: 5377a4160bb65 ("e1000: Add support for the CE4100 reference platform")
> Cc: stable@vger.kernel.org
> Signed-off-by: Zilin Guan <zilin@seu.edu.cn>
> Signed-off-by: Dawei Feng <dawei.feng@seu.edu.cn>
> ---
> drivers/net/ethernet/intel/e1000/e1000_main.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
> index 9b09eb144b81..d7f5c6f16142 100644
> --- a/drivers/net/ethernet/intel/e1000/e1000_main.c
> +++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
> @@ -1222,11 +1222,11 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
>
> if (hw->flash_address)
> iounmap(hw->flash_address);
> +err_mdio_ioremap:
> kfree(adapter->tx_ring);
> kfree(adapter->rx_ring);
> err_dma:
> err_sw_init:
> -err_mdio_ioremap:
> iounmap(hw->ce4100_gbe_mdio_base_virt);
> iounmap(hw->hw_addr);
> err_ioremap:
Reviewed-by: Dima Ruinskiy <dima.ruinskiy@intel.com>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-06-10 8:29 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-07 14:57 [PATCH net] e1000: fix memory leak in e1000_probe() Dawei Feng
2026-06-10 8:29 ` [Intel-wired-lan] " Ruinskiy, Dima
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®