diff options
author | Eric Dumazet <edumazet@google.com> | 2016-06-15 15:24:00 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-06-16 07:15:21 +0200 |
commit | e582615ad33dbd39623084a02e95567b116e1eea (patch) | |
tree | 16f807a602e42f6918f9991b0725bc6e26847025 /kernel | |
parent | net: Don't forget pr_fmt on net_dbg_ratelimited for CONFIG_DYNAMIC_DEBUG (diff) | |
download | linux-e582615ad33dbd39623084a02e95567b116e1eea.tar.xz linux-e582615ad33dbd39623084a02e95567b116e1eea.zip |
gre: fix error handler
1) gre_parse_header() can be called from gre_err()
At this point transport header points to ICMP header, not the inner
header.
2) We can not really change transport header as ipgre_err() will later
assume transport header still points to ICMP header (using icmp_hdr())
3) pskb_may_pull() logic in gre_parse_header() really works
if we are interested at zone pointed by skb->data
4) As Jiri explained in commit b7f8fe251e46 ("gre: do not pull header in
ICMP error processing") we should not pull headers in error handler.
So this fix :
A) changes gre_parse_header() to use skb->data instead of
skb_transport_header()
B) Adds a nhs parameter to gre_parse_header() so that we can skip the
not pulled IP header from error path.
This offset is 0 for normal receive path.
C) remove obsolete IPV6 includes
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Tom Herbert <tom@herbertland.com>
Cc: Maciej Żenczykowski <maze@google.com>
Cc: Jiri Benc <jbenc@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'kernel')
0 files changed, 0 insertions, 0 deletions