unsigned long arg, int ifreq_len)
 {
        struct tun_file *tfile = file->private_data;
+       struct net *net = sock_net(&tfile->sk);
        struct tun_struct *tun;
        void __user* argp = (void __user*)arg;
        struct ifreq ifr;
-       struct net *net;
        kuid_t owner;
        kgid_t group;
        int sndbuf;
                 */
                return put_user(IFF_TUN | IFF_TAP | TUN_FEATURES,
                                (unsigned int __user*)argp);
-       } else if (cmd == TUNSETQUEUE)
+       } else if (cmd == TUNSETQUEUE) {
                return tun_set_queue(file, &ifr);
+       } else if (cmd == SIOCGSKNS) {
+               if (!ns_capable(net->user_ns, CAP_NET_ADMIN))
+                       return -EPERM;
+               return open_related_ns(&net->ns, get_net_ns);
+       }
 
        ret = 0;
        rtnl_lock();
 
        tun = tun_get(tfile);
-       net = sock_net(&tfile->sk);
        if (cmd == TUNSETIFF) {
                ret = -EEXIST;
                if (tun)
                tfile->ifindex = ifindex;
                goto unlock;
        }
-       if (cmd == SIOCGSKNS) {
-               ret = -EPERM;
-               if (!ns_capable(net->user_ns, CAP_NET_ADMIN))
-                       goto unlock;
-
-               ret = open_related_ns(&net->ns, get_net_ns);
-               goto unlock;
-       }
 
        ret = -EBADFD;
        if (!tun)