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 
 > > 
 > > 
 >  
 > 

Reply via email to