From: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
To: Alice Mikityanska <alice.kernel@fastmail.im>,
Daniel Borkmann <daniel@iogearbox.net>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>,
Paolo Abeni <pabeni@redhat.com>,
Xin Long <lucien.xin@gmail.com>,
Willem de Bruijn <willemdebruijn.kernel@gmail.com>,
David Ahern <dsahern@kernel.org>,
Nikolay Aleksandrov <razor@blackwall.org>
Cc: Shuah Khan <shuah@kernel.org>,
Stanislav Fomichev <stfomichev@gmail.com>,
Andrew Lunn <andrew+netdev@lunn.ch>,
Simon Horman <horms@kernel.org>,
Florian Westphal <fw@strlen.de>,
netdev@vger.kernel.org, Alice Mikityanska <alice@isovalent.com>
Subject: Re: [PATCH net-next v2 06/12] udp: Support gro_ipv4_max_size > 65536
Date: Fri, 06 Mar 2026 16:24:57 -0500 [thread overview]
Message-ID: <willemdebruijn.kernel.5d7aebff68af@gmail.com> (raw)
In-Reply-To: <20260226201600.222044-7-alice.kernel@fastmail.im>
Alice Mikityanska wrote:
> From: Alice Mikityanska <alice@isovalent.com>
>
> Currently, gro_max_size and gro_ipv4_max_size can be set to values
> bigger than 65536, and GRO will happily aggregate UDP to the configured
> size (for example, with TCP traffic in VXLAN tunnels). However,
> udp_gro_complete uses the 16-bit length field in the UDP header to store
> the length of the aggregated packet. It leads to the packet truncation
> later in __udp4_lib_rcv.
>
> Fix this by storing 0 to the UDP length field and by restoring the real
> length from skb->len in __udp4_lib_rcv.
>
> Signed-off-by: Alice Mikityanska <alice@isovalent.com>
> ---
> net/ipv4/udp.c | 5 ++++-
> net/ipv4/udp_offload.c | 4 ++--
> net/ipv6/udp_offload.c | 2 +-
> 3 files changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
> index 345ef93001fc..870b35107ede 100644
> --- a/net/ipv4/udp.c
> +++ b/net/ipv4/udp.c
> @@ -2690,7 +2690,7 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
> {
> struct sock *sk = NULL;
> struct udphdr *uh;
> - unsigned short ulen;
> + unsigned int ulen;
> struct rtable *rt = skb_rtable(skb);
> __be32 saddr, daddr;
> struct net *net = dev_net(skb->dev);
> @@ -2714,6 +2714,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
> goto short_packet;
>
> if (proto == IPPROTO_UDP) {
> + if (!ulen)
> + ulen = skb->len;
> +
For normal packets, ip_rcv_core truncates skbs to their IP length.
I don't immediate see the GRO layer taking care of this. Which is fine
if it can be done later, but not if these protocol fields are zeroed.
Should we validate that packets have no padding before we coalesce?
> /* UDP validates ulen. */
> if (ulen < sizeof(*uh) || pskb_trim_rcsum(skb, ulen))
> goto short_packet;
next prev parent reply other threads:[~2026-03-06 21:24 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-26 20:15 [PATCH net-next v2 00/12] BIG TCP for UDP tunnels Alice Mikityanska
2026-02-26 20:15 ` [PATCH net-next v2 01/12] net/sched: act_csum: don't mangle UDP tunnel GSO packets Alice Mikityanska
2026-02-26 20:15 ` [PATCH net-next v2 02/12] udp: gso: Simplify handling length in GSO_PARTIAL Alice Mikityanska
2026-03-06 20:55 ` Willem de Bruijn
2026-03-06 22:19 ` Alice Mikityanska
2026-03-07 23:23 ` Willem de Bruijn
2026-03-07 23:34 ` Alice Mikityanska
2026-03-07 23:53 ` Willem de Bruijn
2026-02-26 20:15 ` [PATCH net-next v2 03/12] geneve: Fix off-by-one comparing with GRO_LEGACY_MAX_SIZE Alice Mikityanska
2026-02-26 20:20 ` Alice Mikityanska
2026-02-26 20:15 ` [PATCH net-next v2 04/12] net: Use helpers to get/set UDP len tree-wide Alice Mikityanska
2026-02-26 20:19 ` Alice Mikityanska
2026-02-26 20:15 ` [PATCH net-next v2 05/12] net: Enable BIG TCP with partial GSO Alice Mikityanska
2026-02-26 20:15 ` [PATCH net-next v2 06/12] udp: Support gro_ipv4_max_size > 65536 Alice Mikityanska
2026-03-06 21:24 ` Willem de Bruijn [this message]
2026-03-06 21:31 ` Willem de Bruijn
2026-02-26 20:15 ` [PATCH net-next v2 07/12] udp: Support BIG TCP GSO packets where they can occur Alice Mikityanska
2026-02-26 20:15 ` [PATCH net-next v2 08/12] udp: Validate UDP length in udp_gro_receive Alice Mikityanska
2026-02-26 20:15 ` [PATCH net-next v2 09/12] udp: Set length in UDP header to 0 for big GSO packets Alice Mikityanska
2026-02-26 20:15 ` [PATCH net-next v2 10/12] vxlan: Enable BIG TCP packets Alice Mikityanska
2026-02-26 20:15 ` [PATCH net-next v2 11/12] geneve: " Alice Mikityanska
2026-02-26 20:16 ` [PATCH net-next v2 12/12] selftests: net: Add a test for BIG TCP in UDP tunnels Alice Mikityanska
2026-02-27 1:30 ` Jakub Kicinski
2026-02-27 9:35 ` Alice Mikityanska
2026-02-27 18:17 ` [syzbot ci] Re: BIG TCP for " syzbot ci
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=willemdebruijn.kernel.5d7aebff68af@gmail.com \
--to=willemdebruijn.kernel@gmail.com \
--cc=alice.kernel@fastmail.im \
--cc=alice@isovalent.com \
--cc=andrew+netdev@lunn.ch \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=fw@strlen.de \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=lucien.xin@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=razor@blackwall.org \
--cc=shuah@kernel.org \
--cc=stfomichev@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox