Simon, you're right. e1000e_reset_interrupt_capability already frees msix_entries. I'll drop this patch.
Thanks, Ashwin Gundarapu From: Simon Horman <[email protected]> To: "Ashwin Gundarapu"<[email protected]> Cc: "anthonylnguyen"<[email protected]>, "[email protected]"<[email protected]>, "andrewnetdev"<[email protected]>, "davem"<[email protected]>, "edumazet"<[email protected]>, "kuba"<[email protected]>, "pabeni"<[email protected]>, "intel-wired-lan"<[email protected]>, "netdev"<[email protected]>, "linux-kernel"<[email protected]> Date: Wed, 27 May 2026 01:31:14 +0530 Subject: Re: [PATCH net-next] e1000e: fix memory leak of msix_entries on MSI-X failure > On Sat, May 23, 2026 at 11:52:14AM +0530, Ashwin Gundarapu wrote: > > From: Ashwin Gundarapu <[email protected]> > > Date: Sat, 23 May 2026 11:49:40 +0530 > > Subject: [PATCH] e1000e: fix memory leak of msix_entries on MSI-X failure > > > > When MSI-X initialization fails, the driver falls through to try > > MSI or legacy interrupts. However, the msix_entries array allocated > > earlier is not freed, causing a memory leak. Free it and set to > > NULL before falling through to the MSI fallback path. > > > > Found by code inspection. > > > > Signed-off-by: Ashwin Gundarapu <[email protected]> > > --- > > drivers/net/ethernet/intel/e1000e/netdev.c | 10 ++++++---- > > 1 file changed, 6 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c > > b/drivers/net/ethernet/intel/e1000e/netdev.c > > index 7ce0cc8ab8f4..1526069d7fc1 100644 > > --- a/drivers/net/ethernet/intel/e1000e/netdev.c > > +++ b/drivers/net/ethernet/intel/e1000e/netdev.c > > @@ -2065,10 +2065,12 @@ void e1000e_set_interrupt_capability(struct > > e1000_adapter *adapter) > > a->num_vectors); > > if (err > 0) > > return; > > - } > > - /* MSI-X failed, so fall through and try MSI */ > > - e_err("Failed to initialize MSI-X interrupts. Falling back > > to MSI interrupts.\n"); > > - e1000e_reset_interrupt_capability(adapter); > > + } > > + /* MSI-X failed, so fall through and try MSI */ > > + e_err("Failed to initialize MSI-X interrupts. > > Falling back to MSI interrupts.\n"); > > + kfree(adapter->msix_entries); > > + adapter->msix_entries = NULL; > > + e1000e_reset_interrupt_capability(adapter); > > Hi Ashwin, > > e1000e_reset_interrupt_capability() already handles freeing (and NULLing) > msix_entries, and it does so after calling pci_disable_msix(). > > This patch seems to have the effect of bypassing the call to > pci_disable_msix(). > > Are you sure this is fixing a memory leak as described? > > Flagged by https://sashiko.dev/ and > https://netdev-ai.bots.linux.dev/sashiko/ > > > } > > adapter->int_mode = E1000E_INT_MODE_MSI; > > fallthrough; > > -- > > 2.43.0 > > > > > >
