xfrm: Verify MAC header exists before overwriting eth_hdr(skb)->h_proto
authorYossi Kuperman <yossiku@mellanox.com>
Sun, 4 Mar 2018 19:03:52 +0000 (21:03 +0200)
committerSteffen Klassert <steffen.klassert@secunet.com>
Wed, 7 Mar 2018 09:54:29 +0000 (10:54 +0100)
commit87cdf3148b11d46382dbce2754ae7036aba96380
tree24198025d23c7af2c8ad5f280304b59ec4201b64
parentb8b549eec8187ac1b12075d69a2d84d89b5e811a
xfrm: Verify MAC header exists before overwriting eth_hdr(skb)->h_proto

Artem Savkov reported that commit 5efec5c655dd leads to a packet loss under
IPSec configuration. It appears that his setup consists of a TUN device,
which does not have a MAC header.

Make sure MAC header exists.

Note: TUN device sets a MAC header pointer, although it does not have one.

Fixes: 5efec5c655dd ("xfrm: Fix eth_hdr(skb)->h_proto to reflect inner IP version")
Reported-by: Artem Savkov <artem.savkov@gmail.com>
Tested-by: Artem Savkov <artem.savkov@gmail.com>
Signed-off-by: Yossi Kuperman <yossiku@mellanox.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
net/ipv4/xfrm4_mode_tunnel.c
net/ipv6/xfrm6_mode_tunnel.c