]> git.dujemihanovic.xyz Git - linux.git/commitdiff
net: dpaa: Pad packets to ETH_ZLEN
authorSean Anderson <sean.anderson@linux.dev>
Tue, 10 Sep 2024 14:31:44 +0000 (10:31 -0400)
committerJakub Kicinski <kuba@kernel.org>
Wed, 11 Sep 2024 23:01:25 +0000 (16:01 -0700)
When sending packets under 60 bytes, up to three bytes of the buffer
following the data may be leaked. Avoid this by extending all packets to
ETH_ZLEN, ensuring nothing is leaked in the padding. This bug can be
reproduced by running

$ ping -s 11 destination

Fixes: 9ad1a3749333 ("dpaa_eth: add support for DPAA Ethernet")
Suggested-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Sean Anderson <sean.anderson@linux.dev>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/20240910143144.1439910-1-sean.anderson@linux.dev
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/freescale/dpaa/dpaa_eth.c

index cfe6b57b1da0e45613ac1bbf32ddd6ace329f4fd..4a55e521c17ecd07197425b0e62d1acff82bf851 100644 (file)
@@ -2272,12 +2272,12 @@ static netdev_tx_t
 dpaa_start_xmit(struct sk_buff *skb, struct net_device *net_dev)
 {
        const int queue_mapping = skb_get_queue_mapping(skb);
-       bool nonlinear = skb_is_nonlinear(skb);
        struct rtnl_link_stats64 *percpu_stats;
        struct dpaa_percpu_priv *percpu_priv;
        struct netdev_queue *txq;
        struct dpaa_priv *priv;
        struct qm_fd fd;
+       bool nonlinear;
        int offset = 0;
        int err = 0;
 
@@ -2287,6 +2287,13 @@ dpaa_start_xmit(struct sk_buff *skb, struct net_device *net_dev)
 
        qm_fd_clear_fd(&fd);
 
+       /* Packet data is always read as 32-bit words, so zero out any part of
+        * the skb which might be sent if we have to pad the packet
+        */
+       if (__skb_put_padto(skb, ETH_ZLEN, false))
+               goto enomem;
+
+       nonlinear = skb_is_nonlinear(skb);
        if (!nonlinear) {
                /* We're going to store the skb backpointer at the beginning
                 * of the data buffer, so we need a privately owned skb