]> www.infradead.org Git - users/hch/misc.git/commitdiff
net: ngbe: fix memory leak in ngbe_probe() error path
authorAbdun Nihaal <abdun.nihaal@gmail.com>
Sat, 12 Apr 2025 15:49:24 +0000 (21:19 +0530)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 15 Apr 2025 14:06:48 +0000 (16:06 +0200)
When ngbe_sw_init() is called, memory is allocated for wx->rss_key
in wx_init_rss_key(). However, in ngbe_probe() function, the subsequent
error paths after ngbe_sw_init() don't free the rss_key. Fix that by
freeing it in error path along with wx->mac_table.

Also change the label to which execution jumps when ngbe_sw_init()
fails, because otherwise, it could lead to a double free for rss_key,
when the mac_table allocation fails in wx_sw_init().

Fixes: 02338c484ab6 ("net: ngbe: Initialize sw info and register netdev")
Signed-off-by: Abdun Nihaal <abdun.nihaal@gmail.com>
Reviewed-by: Kory Maincent <kory.maincent@bootlin.com>
Reviewed-by: Jiawen Wu <jiawenwu@trustnetic.com>
Link: https://patch.msgid.link/20250412154927.25908-1-abdun.nihaal@gmail.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c

index a6159214ec0a989fea701079f281ea8dd8ff023e..91b3055a5a9f599dc1efb9ced87a6ad8dafb08b9 100644 (file)
@@ -625,7 +625,7 @@ static int ngbe_probe(struct pci_dev *pdev,
        /* setup the private structure */
        err = ngbe_sw_init(wx);
        if (err)
-               goto err_free_mac_table;
+               goto err_pci_release_regions;
 
        /* check if flash load is done after hw power up */
        err = wx_check_flash_load(wx, NGBE_SPI_ILDR_STATUS_PERST);
@@ -719,6 +719,7 @@ err_register:
 err_clear_interrupt_scheme:
        wx_clear_interrupt_scheme(wx);
 err_free_mac_table:
+       kfree(wx->rss_key);
        kfree(wx->mac_table);
 err_pci_release_regions:
        pci_release_selected_regions(pdev,