mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-03 04:26:55 +00:00
27 lines
1000 B
Diff
27 lines
1000 B
Diff
|
From 32412565c27d63e15f25e76d86ee04c29b201b96 Mon Sep 17 00:00:00 2001
|
||
|
From: Felix Fietkau <nbd@nbd.name>
|
||
|
Date: Mon, 19 Aug 2024 15:20:42 +0200
|
||
|
Subject: [PATCH] udp: fix receiving fraglist GSO packets
|
||
|
|
||
|
When assembling fraglist GSO packets, udp4_gro_complete does not set
|
||
|
skb->csum_start, which makes the extra validation in __udp_gso_segment fail.
|
||
|
|
||
|
Fixes: 89add40066f9 ("net: drop bad gso csum_start and offset in virtio_net_hdr")
|
||
|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||
|
---
|
||
|
net/ipv4/udp_offload.c | 3 ++-
|
||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||
|
|
||
|
--- a/net/ipv4/udp_offload.c
|
||
|
+++ b/net/ipv4/udp_offload.c
|
||
|
@@ -279,7 +279,8 @@ struct sk_buff *__udp_gso_segment(struct
|
||
|
return ERR_PTR(-EINVAL);
|
||
|
|
||
|
if (unlikely(skb_checksum_start(gso_skb) !=
|
||
|
- skb_transport_header(gso_skb)))
|
||
|
+ skb_transport_header(gso_skb) &&
|
||
|
+ !(skb_shinfo(gso_skb)->gso_type & SKB_GSO_FRAGLIST)))
|
||
|
return ERR_PTR(-EINVAL);
|
||
|
|
||
|
/* We don't know if egress device can segment and checksum the packet
|