net: preserve IP control block during GSO segmentation
authorKonstantin Khlebnikov <koct9i@gmail.com>
Fri, 8 Jan 2016 12:21:46 +0000 (15:21 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 31 Jan 2016 19:29:00 +0000 (11:29 -0800)
commit1f0bdf609240616452a2864df67493f9a93535ec
treed315aa8eeac4360dbc2012ecbde1bd8261c9c127
parentb856abbb45e83a7f61afb838b065e6175be61c61
net: preserve IP control block during GSO segmentation

[ Upstream commit 9207f9d45b0ad071baa128e846d7e7ed85016df3 ]

Skb_gso_segment() uses skb control block during segmentation.
This patch adds 32-bytes room for previous control block which
will be copied into all resulting segments.

This patch fixes kernel crash during fragmenting forwarded packets.
Fragmentation requires valid IP CB in skb for clearing ip options.
Also patch removes custom save/restore in ovs code, now it's redundant.

Signed-off-by: Konstantin Khlebnikov <koct9i@gmail.com>
Link: http://lkml.kernel.org/r/CALYGNiP-0MZ-FExV2HutTvE9U-QQtkKSoE--KN=JQE5STYsjAA@mail.gmail.com
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/linux/skbuff.h
net/core/dev.c
net/ipv4/ip_output.c
net/openvswitch/datapath.c
net/xfrm/xfrm_output.c