On Mon, Feb 2, 2026 at 12:43 PM Paolo Abeni <[email protected]> wrote: > > The udp GRO complete stage assumes that all the packets inserted the RX > have the `encapsulation` flag zeroed. Such assumption is not true, as a > few H/W NICs can set such flag when H/W offloading the checksum for > an UDP encapsulated traffic, the tun driver can inject GSO packets with > UDP encapsulation and the problematic layout can also be created via > a veth based setup. > > Due to the above, in the problematic scenarios, udp4_gro_complete() uses > the wrong network offset (inner instead of outer) to compute the outer > UDP header pseudo checksum, leading to csum validation errors later on > in packet processing. > > Address the issue always clearing the encapsulation flag at GRO completion > time. Such flag will be set again as needed for encapsulated packets by > udp_gro_complete(). > > Fixes: 5ef31ea5d053 ("net: gro: fix udp bad offset in socket lookup by adding > {inner_}network_offset to napi_gro_cb") > Reviewed-by: Willem de Bruijn <[email protected]> > Signed-off-by: Paolo Abeni <[email protected]> > ---
Reviewed-by: Eric Dumazet <[email protected]>
