net: ethernet: aeroflex: fix potential memory leak in greth_start_xmit_gbit()
authorWang Hai <wanghai38@huawei.com>
Sat, 12 Oct 2024 11:04:34 +0000 (19:04 +0800)
committerJakub Kicinski <kuba@kernel.org>
Tue, 15 Oct 2024 16:59:20 +0000 (09:59 -0700)
The greth_start_xmit_gbit() returns NETDEV_TX_OK without freeing skb
in case of skb->len being too long, add dev_kfree_skb() to fix it.

Fixes: d4c41139df6e ("net: Add Aeroflex Gaisler 10/100/1G Ethernet MAC driver")
Signed-off-by: Wang Hai <wanghai38@huawei.com>
Reviewed-by: Gerhard Engleder <gerhard@engleder-embedded.com>
Link: https://patch.msgid.link/20241012110434.49265-1-wanghai38@huawei.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/aeroflex/greth.c

index 27af7746d645b81305ca79597f5bf4d1262a7a9f..adf6f67c5fcbade6d2acac1a7ea5b6a54d82f9d4 100644 (file)
@@ -484,7 +484,7 @@ greth_start_xmit_gbit(struct sk_buff *skb, struct net_device *dev)
 
        if (unlikely(skb->len > MAX_FRAME_SIZE)) {
                dev->stats.tx_errors++;
-               goto out;
+               goto len_error;
        }
 
        /* Save skb pointer. */
@@ -575,6 +575,7 @@ frag_map_error:
 map_error:
        if (net_ratelimit())
                dev_warn(greth->dev, "Could not create TX DMA mapping\n");
+len_error:
        dev_kfree_skb(skb);
 out:
        return err;