esp: choose the correct inner protocol for GSO on inter address family tunnels
authorSabrina Dubroca <sd@queasysnail.net>
Thu, 25 Aug 2022 15:16:51 +0000 (17:16 +0200)
committerSteffen Klassert <steffen.klassert@secunet.com>
Mon, 29 Aug 2022 08:20:58 +0000 (10:20 +0200)
commit26dbd66eab8080be51759e48280da04015221e22
treeec8ba8141c89f1966ae1eb5f8821fcf567fa2ba0
parentebe5555c2f34505cdb1ae5c3de8b24e33740b3e0
esp: choose the correct inner protocol for GSO on inter address family tunnels

Commit 23c7f8d7989e ("net: Fix esp GSO on inter address family
tunnels.") is incomplete. It passes to skb_eth_gso_segment the
protocol for the outer IP version, instead of the inner IP version, so
we end up calling inet_gso_segment on an inner IPv6 packet and
ipv6_gso_segment on an inner IPv4 packet and the packets are dropped.

This patch completes the fix by selecting the correct protocol based
on the inner mode's family.

Fixes: c35fe4106b92 ("xfrm: Add mode handlers for IPsec on layer 2")
Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
net/ipv4/esp4_offload.c
net/ipv6/esp6_offload.c