]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
igc: fix potential skb leak in igc_fpe_xmit_smd_frame()
authorKohei Enju <kohei@enjuk.jp>
Fri, 15 May 2026 18:24:16 +0000 (11:24 -0700)
committerJakub Kicinski <kuba@kernel.org>
Tue, 19 May 2026 02:00:44 +0000 (19:00 -0700)
When igc_fpe_init_tx_descriptor() fails, no one takes care of an
allocated skb, leaking it. [1]
Use dev_kfree_skb_any() on failure.

Tested on an I226 adapter with the following command, while injecting
faults in igc_fpe_init_tx_descriptor() to trigger the error path.
 # ethtool --set-mm $DEV verify-enabled on tx-enabled on pmac-enabled on

[1]
unreferenced object 0xffff888113c6cdc0 (size 224):
...
  backtrace (crc be3d3fda):
    kmem_cache_alloc_node_noprof+0x3b1/0x410
    __alloc_skb+0xde/0x830
    igc_fpe_xmit_smd_frame.isra.0+0xad/0x1b0
    igc_fpe_send_mpacket+0x37/0x90
    ethtool_mmsv_verify_timer+0x15e/0x300

Cc: stable@vger.kernel.org
Fixes: 5422570c0010 ("igc: add support for frame preemption verification")
Signed-off-by: Kohei Enju <kohei@enjuk.jp>
Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Faizal Rahim <faizal.abdul.rahim@linux.intel.com>
Tested-by: Avigail Dahan <avigailx.dahan@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Link: https://patch.msgid.link/20260515182419.1597859-10-anthony.l.nguyen@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/intel/igc/igc_tsn.c

index 725ba253165c7ada768ce89653e006ca4dd6fd3d..52de2bcbadbec7a4443e8754eb914fe8b892c71d 100644 (file)
@@ -110,10 +110,16 @@ static int igc_fpe_xmit_smd_frame(struct igc_adapter *adapter,
        __netif_tx_lock(nq, cpu);
 
        err = igc_fpe_init_tx_descriptor(ring, skb, type);
-       igc_flush_tx_descriptors(ring);
+       if (err)
+               goto err_free_skb_any;
 
+       igc_flush_tx_descriptors(ring);
        __netif_tx_unlock(nq);
+       return 0;
 
+err_free_skb_any:
+       __netif_tx_unlock(nq);
+       dev_kfree_skb_any(skb);
        return err;
 }