09/11/2026 10:27, Andrey Mokrushin:
> IS_IPV4_TCP() and IS_IPV4_UDP() do not check the tunnel type bits.
> A tunnel packet that does not match any of the tunnel cases (IPIP,
> GENEVE, IPv6 outer header, VXLAN or GRE without its type in gso_types)
> is segmented as a plain TCP/IPv4 or UDP/IPv4 packet. For a tunnel
> packet, l2_len, l3_len and l4_len describe the inner headers, so the
> segments get wrong header boundaries, and the IPv4 and TCP header
> updates overwrite the outer Ethernet and IPv4 headers. When the bytes
> read as fragment offset are not zero, the packet is returned
> unsegmented instead.
>
> Return -ENOTSUP for such packets, as documented for protocols that
> can not be segmented.
>
> Fixes: 119583797b6a ("gso: support TCP/IPv4 GSO")
> Fixes: b166d4f30b66 ("gso: support UDP/IPv4 fragmentation")
> Cc: [email protected]
>
> Signed-off-by: Andrey Mokrushin <[email protected]>
Applied, thanks.