Message ID | 20241228021220.296648-1-antonio.pastor@gmail.com (mailing list archive) |
---|---|
State | New |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] net: 802: reset skb->transport_header | expand |
diff --git a/net/802/psnap.c b/net/802/psnap.c index fca9d454905f..252006f81afa 100644 --- a/net/802/psnap.c +++ b/net/802/psnap.c @@ -58,8 +58,8 @@ static int snap_rcv(struct sk_buff *skb, struct net_device *dev, proto = find_snap_client(skb_transport_header(skb)); if (proto) { /* Pass the frame on. */ - skb->transport_header += 5; skb_pull_rcsum(skb, 5); + skb_reset_transport_header(skb); rc = proto->rcvfunc(skb, dev, &snap_packet_type, orig_dev); } rcu_read_unlock();
802.2+LLC+SNAP frames received by napi_complete_done() with GRO and DSA have skb->transport_header set two bytes short, or pointing 2 bytes before network_header & skb->data. This was an issue as snap_rcv() expected offset to point to SNAP header (OID:PID), causing packet to be dropped. A fix at llc_fixup_skb() (a024e377efed) resets transport_header, addressing the issue. This patch is additional clean up to snap_rcv() so that it resets the offset after pulling the skb instead of incrementing it to match the pull. Fixes: fda55eca5a33 ("net: introduce skb_transport_header_was_set()") Signed-off-by: Antonio Pastor <antonio.pastor@gmail.com> --- net/802/psnap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)