]> git.itanic.dy.fi Git - linux-stable/commitdiff
net: ravb: Fix GbEth jumbo packet RX checksum handling
authorPaul Barker <paul.barker.ct@bp.renesas.com>
Tue, 16 Apr 2024 12:02:53 +0000 (13:02 +0100)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 18 Apr 2024 09:34:28 +0000 (11:34 +0200)
Sending a 7kB ping packet to the RZ/G2L in v6.9-rc2 causes the following
backtrace:

WARNING: CPU: 0 PID: 0 at include/linux/skbuff.h:3127 skb_trim+0x30/0x38
Hardware name: Renesas SMARC EVK based on r9a07g044l2 (DT)
pc : skb_trim+0x30/0x38
lr : ravb_rx_csum_gbeth+0x40/0x90
Call trace:
 skb_trim+0x30/0x38
 ravb_rx_gbeth+0x56c/0x5cc
 ravb_poll+0xa0/0x204
 __napi_poll+0x38/0x17c

This is caused by ravb_rx_gbeth() calling ravb_rx_csum_gbeth() with the
wrong skb for a packet which spans multiple descriptors. To fix this,
use the correct skb.

Fixes: c2da9408579d ("ravb: Add Rx checksum offload support for GbEth")
Signed-off-by: Paul Barker <paul.barker.ct@bp.renesas.com>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/renesas/ravb_main.c

index 3b870926af14e9acb8a9f752b93a023dd3b6baa3..6969cdeeb67ab22cb832f49f8b74932d05ea44c0 100644 (file)
@@ -843,7 +843,7 @@ static bool ravb_rx_gbeth(struct net_device *ndev, int *quota, int q)
                                priv->rx_1st_skb->protocol =
                                        eth_type_trans(priv->rx_1st_skb, ndev);
                                if (ndev->features & NETIF_F_RXCSUM)
-                                       ravb_rx_csum_gbeth(skb);
+                                       ravb_rx_csum_gbeth(priv->rx_1st_skb);
                                napi_gro_receive(&priv->napi[q],
                                                 priv->rx_1st_skb);
                                rx_packets++;