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]>

Reply via email to