[3.16.y-ckt stable] Patch "vti6: fix uninit when using x-netns" has been added to staging queue
Luis Henriques
luis.henriques at canonical.com
Wed May 6 09:53:06 UTC 2015
This is a note to let you know that I have just added a patch titled
vti6: fix uninit when using x-netns
to the linux-3.16.y-queue branch of the 3.16.y-ckt extended stable tree
which can be found at:
http://kernel.ubuntu.com/git/ubuntu/linux.git/log/?h=linux-3.16.y-queue
This patch is scheduled to be released in version 3.16.7-ckt11.
If you, or anyone else, feels it should not be added to this tree, please
reply to this email.
For more information about the 3.16.y-ckt tree, see
https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable
Thanks.
-Luis
------
>From 5ab75c6d34fc3dfb4ba25c9398e6dfda8b671ef5 Mon Sep 17 00:00:00 2001
From: Yao Xiwei <xiwei.yao at 6wind.com>
Date: Thu, 2 Apr 2015 17:31:17 +0200
Subject: vti6: fix uninit when using x-netns
commit 092a29a40bab8bb4530bb3e58a0597001cdecdef 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: 61220ab34948 ("vti6: Enable namespace changing")
Signed-off-by: Yao Xiwei <xiwei.yao at 6wind.com>
Signed-off-by: Nicolas Dichtel <nicolas.dichtel at 6wind.com>
Signed-off-by: Steffen Klassert <steffen.klassert at secunet.com>
Signed-off-by: Luis Henriques <luis.henriques at canonical.com>
---
net/ipv6/ip6_vti.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/net/ipv6/ip6_vti.c b/net/ipv6/ip6_vti.c
index 7c6e6bfb1b0f..4e083dab7445 100644
--- a/net/ipv6/ip6_vti.c
+++ b/net/ipv6/ip6_vti.c
@@ -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)
{
struct ip6_tnl *t = netdev_priv(dev);
- struct net *net = dev_net(dev);
- struct vti6_net *ip6n = net_generic(net, vti6_net_id);
+ struct vti6_net *ip6n = net_generic(t->net, vti6_net_id);
if (dev == ip6n->fb_tnl_dev)
RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL);
More information about the kernel-team
mailing list