diff options
author | Lorenzo Bianconi | 2019-01-18 12:05:39 +0100 |
---|---|---|
committer | Greg Kroah-Hartman | 2019-02-06 17:30:06 +0100 |
commit | 0a198e0bb8bef51ced179702ad1af6f9e3715b64 (patch) | |
tree | dd7711aa0b5ba877a2dc2b9d2e6d026c6e6bb4b8 /net/ipv6 | |
parent | net: ip_gre: always reports o_key to userspace (diff) | |
download | kernel-qcow2-linux-0a198e0bb8bef51ced179702ad1af6f9e3715b64.tar.gz kernel-qcow2-linux-0a198e0bb8bef51ced179702ad1af6f9e3715b64.tar.xz kernel-qcow2-linux-0a198e0bb8bef51ced179702ad1af6f9e3715b64.zip |
net: ip_gre: use erspan key field for tunnel lookup
[ Upstream commit cb73ee40b1b381eaf3749e6dbeed567bb38e5258 ]
Use ERSPAN key header field as tunnel key in gre_parse_header routine
since ERSPAN protocol sets the key field of the external GRE header to
0 resulting in a tunnel lookup fail in ip6gre_err.
In addition remove key field parsing and pskb_may_pull check in
erspan_rcv and ip6erspan_rcv
Fixes: 5a963eb61b7c ("ip6_gre: Add ERSPAN native tunnel support")
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/ip6_gre.c | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c index 345e6839f031..580907eb42cd 100644 --- a/net/ipv6/ip6_gre.c +++ b/net/ipv6/ip6_gre.c @@ -550,13 +550,9 @@ static int ip6erspan_rcv(struct sk_buff *skb, int gre_hdr_len, struct ip6_tnl *tunnel; u8 ver; - if (unlikely(!pskb_may_pull(skb, sizeof(*ershdr)))) - return PACKET_REJECT; - ipv6h = ipv6_hdr(skb); ershdr = (struct erspan_base_hdr *)skb->data; ver = ershdr->ver; - tpi->key = cpu_to_be32(get_session_id(ershdr)); tunnel = ip6gre_tunnel_lookup(skb->dev, &ipv6h->saddr, &ipv6h->daddr, tpi->key, |