]> www.infradead.org Git - users/hch/misc.git/commitdiff
net: txgbe: fix memory leak in txgbe_probe() error path
authorAbdun Nihaal <abdun.nihaal@gmail.com>
Tue, 15 Apr 2025 03:29:09 +0000 (08:59 +0530)
committerJakub Kicinski <kuba@kernel.org>
Thu, 17 Apr 2025 01:12:36 +0000 (18:12 -0700)
When txgbe_sw_init() is called, memory is allocated for wx->rss_key
in wx_init_rss_key(). However, in txgbe_probe() function, the subsequent
error paths after txgbe_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 txgbe_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: 937d46ecc5f9 ("net: wangxun: add ethtool_ops for channel number")
Reported-by: Jiawen Wu <jiawenwu@trustnetic.com>
Signed-off-by: Abdun Nihaal <abdun.nihaal@gmail.com>
Reviewed-by: Jiawen Wu <jiawenwu@trustnetic.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250415032910.13139-1-abdun.nihaal@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c

index a2e245e3b016831ab154c23f59f6b7cdd918375b..38206a46693bcd8e5120a582188a4285bc72cb70 100644 (file)
@@ -611,7 +611,7 @@ static int txgbe_probe(struct pci_dev *pdev,
        /* setup the private structure */
        err = txgbe_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, TXGBE_SPI_ILDR_STATUS_PERST);
@@ -769,6 +769,7 @@ err_release_hw:
        wx_clear_interrupt_scheme(wx);
        wx_control_hw(wx, false);
 err_free_mac_table:
+       kfree(wx->rss_key);
        kfree(wx->mac_table);
 err_pci_release_regions:
        pci_release_selected_regions(pdev,