xfrm6: Fix CHECKSUM_COMPLETE after IPv6 header push
authorYossi Kuperman <yossiku@mellanox.com>
Tue, 1 Aug 2017 09:49:06 +0000 (12:49 +0300)
committerSteffen Klassert <steffen.klassert@secunet.com>
Wed, 2 Aug 2017 09:00:15 +0000 (11:00 +0200)
commite9cba69448df7686e1c35e74be48fc715d41ac45
tree4b3931944d089bc8c5c5f16f29a1a46c62d46048
parente51a64727079f46fc3a99f380de384d5ab01fffa
xfrm6: Fix CHECKSUM_COMPLETE after IPv6 header push

xfrm6_transport_finish rebuilds the IPv6 header based on the
original one and pushes it back without fixing skb->csum.
Therefore, CHECKSUM_COMPLETE is no longer valid and the packet
gets dropped.

Fix skb->csum by calling skb_postpush_rcsum.

Note: A valid IPv4 header has checksum 0, unlike IPv6. Thus,
the change is not needed in the sibling xfrm4_transport_finish
function.

Signed-off-by: Yossi Kuperman <yossiku@mellanox.com>
Signed-off-by: Ilan Tayari <ilant@mellanox.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
net/ipv6/xfrm6_input.c