summaryrefslogtreecommitdiff
path: root/net/ipv6/xfrm6_tunnel.c
diff options
context:
space:
mode:
authorNicolas Dichtel <nicolas.dichtel@6wind.com>2016-09-19 16:17:57 +0200
committerSteffen Klassert <steffen.klassert@secunet.com>2016-09-21 10:09:14 +0200
commit63c43787d35e45562a6b5927e2edc8f4783d95b8 (patch)
tree2f16ef080b7a0b9fdd43915a33fd6ab2557eca2f /net/ipv6/xfrm6_tunnel.c
parentb588479358ce26f32138e0f0a7ab0678f8e3e601 (diff)
downloadlinux-rpi-63c43787d35e45562a6b5927e2edc8f4783d95b8.tar.gz
linux-rpi-63c43787d35e45562a6b5927e2edc8f4783d95b8.tar.bz2
linux-rpi-63c43787d35e45562a6b5927e2edc8f4783d95b8.zip
vti6: fix input path
Since commit 1625f4529957, vti6 is broken, all input packets are dropped (LINUX_MIB_XFRMINNOSTATES is incremented). XFRM_TUNNEL_SKB_CB(skb)->tunnel.ip6 is set by vti6_rcv() before calling xfrm6_rcv()/xfrm6_rcv_spi(), thus we cannot set to NULL that value in xfrm6_rcv_spi(). A new function xfrm6_rcv_tnl() that enables to pass a value to xfrm6_rcv_spi() is added, so that xfrm6_rcv() is not touched (this function is used in several handlers). CC: Alexey Kodanev <alexey.kodanev@oracle.com> Fixes: 1625f4529957 ("net/xfrm_input: fix possible NULL deref of tunnel.ip6->parms.i_key") Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Diffstat (limited to 'net/ipv6/xfrm6_tunnel.c')
-rw-r--r--net/ipv6/xfrm6_tunnel.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv6/xfrm6_tunnel.c b/net/ipv6/xfrm6_tunnel.c
index 5743044cd660..e1c0bbe7996c 100644
--- a/net/ipv6/xfrm6_tunnel.c
+++ b/net/ipv6/xfrm6_tunnel.c
@@ -236,7 +236,7 @@ static int xfrm6_tunnel_rcv(struct sk_buff *skb)
__be32 spi;
spi = xfrm6_tunnel_spi_lookup(net, (const xfrm_address_t *)&iph->saddr);
- return xfrm6_rcv_spi(skb, IPPROTO_IPV6, spi);
+ return xfrm6_rcv_spi(skb, IPPROTO_IPV6, spi, NULL);
}
static int xfrm6_tunnel_err(struct sk_buff *skb, struct inet6_skb_parm *opt,