]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - net/ipv6/ip6_tunnel.c
ip6_tunnel: use the right netns in ioctl handler
[karo-tx-linux.git] / net / ipv6 / ip6_tunnel.c
index e1df691d78befcb2bb041244ed3370b44667b40d..b05b609f69d1cd3e58bd525cb0b5e8b11d429b80 100644 (file)
@@ -1340,8 +1340,8 @@ ip6_tnl_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
        int err = 0;
        struct ip6_tnl_parm p;
        struct __ip6_tnl_parm p1;
-       struct ip6_tnl *t = NULL;
-       struct net *net = dev_net(dev);
+       struct ip6_tnl *t = netdev_priv(dev);
+       struct net *net = t->net;
        struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id);
 
        switch (cmd) {
@@ -1353,11 +1353,11 @@ ip6_tnl_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
                        }
                        ip6_tnl_parm_from_user(&p1, &p);
                        t = ip6_tnl_locate(net, &p1, 0);
+                       if (t == NULL)
+                               t = netdev_priv(dev);
                } else {
                        memset(&p, 0, sizeof(p));
                }
-               if (t == NULL)
-                       t = netdev_priv(dev);
                ip6_tnl_parm_to_user(&p, &t->parms);
                if (copy_to_user(ifr->ifr_ifru.ifru_data, &p, sizeof (p))) {
                        err = -EFAULT;