Commit c972ad44 authored by Yao Xiwei's avatar Yao Xiwei Committed by Luis Henriques

vti6: fix uninit when using x-netns

commit 092a29a4 upstream.

When the kernel deleted a vti6 interface, this interface was not removed from
the tunnels list. Thus, when the ip6_vti module was removed, this old interface
was found and the kernel tried to delete it again. This was leading to a kernel
panic.

Fixes: 61220ab3 ("vti6: Enable namespace changing")
Signed-off-by: default avatarYao Xiwei <xiwei.yao@6wind.com>
Signed-off-by: default avatarNicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
parent 6c380a76
...@@ -267,8 +267,7 @@ static struct ip6_tnl *vti6_locate(struct net *net, struct __ip6_tnl_parm *p, ...@@ -267,8 +267,7 @@ static struct ip6_tnl *vti6_locate(struct net *net, struct __ip6_tnl_parm *p,
static void vti6_dev_uninit(struct net_device *dev) static void vti6_dev_uninit(struct net_device *dev)
{ {
struct ip6_tnl *t = netdev_priv(dev); struct ip6_tnl *t = netdev_priv(dev);
struct net *net = dev_net(dev); struct vti6_net *ip6n = net_generic(t->net, vti6_net_id);
struct vti6_net *ip6n = net_generic(net, vti6_net_id);
if (dev == ip6n->fb_tnl_dev) if (dev == ip6n->fb_tnl_dev)
RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL); RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment