lkml.org 
[lkml]   [2015]   [May]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16.y-ckt 161/180] vti6: fix uninit when using x-netns
    Date
    3.16.7-ckt11 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Yao Xiwei <xiwei.yao@6wind.com>

    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@6wind.com>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Luis Henriques <luis.henriques@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);

    \
     
     \ /
      Last update: 2015-05-07 12:41    [W:4.294 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site