Re: [PATCH v2] net: preserve IP control block during GSO segmentation

From: Florian Westphal
Date: Wed Jan 13 2016 - 18:37:04 EST


David Miller <davem@xxxxxxxxxxxxx> wrote:
> From: Konstantin Khlebnikov <koct9i@xxxxxxxxx>
> Date: Fri, 08 Jan 2016 15:21:46 +0300
>
> > 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@xxxxxxxxx>
> > Link: http://lkml.kernel.org/r/CALYGNiP-0MZ-FExV2HutTvE9U-QQtkKSoE--KN=JQE5STYsjAA@xxxxxxxxxxxxxx
>
> If this works I definitely prefer this approach to the other patch
> where the CB is copied back and forth.

I quite frankly don't care and just like you to apply one or the other;
use coin toss if needed :-}

I would prefer to use a on-stack state since there is no need to
use skb->cb (no queueing) but when I gave it a try it got out of hand
rather quick :-/

Anyway Konstantins approach is safe since we only need this in
ovs/ip forward + nfnetlink_queue cases and in all of these there is
enough room at the cb end (for now at least).