]> git.baikalelectronics.ru Git - kernel.git/commit
gro: Disable frag0 optimization on IPv6 ext headers
authorHerbert Xu <herbert@gondor.apana.org.au>
Tue, 10 Jan 2017 20:24:15 +0000 (12:24 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 11 Jan 2017 02:30:33 +0000 (21:30 -0500)
commit286b54da2a3e1c6587f2099609b5f7a858358168
treeb1a308499831346c7e39072c41c4e503c9113530
parent04a5b02843126c11e7e9d6368b94009281e52df9
gro: Disable frag0 optimization on IPv6 ext headers

The GRO fast path caches the frag0 address.  This address becomes
invalid if frag0 is modified by pskb_may_pull or its variants.
So whenever that happens we must disable the frag0 optimization.

This is usually done through the combination of gro_header_hard
and gro_header_slow, however, the IPv6 extension header path did
the pulling directly and would continue to use the GRO fast path
incorrectly.

This patch fixes it by disabling the fast path when we enter the
IPv6 extension header path.

Fixes: 20fef5c8c69c ("gro: Inline skb_gro_header and cache frag0 virtual address")
Reported-by: Slava Shwartsman <slavash@mellanox.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netdevice.h
net/ipv6/ip6_offload.c