struct nlattr *tb[IFLA_BRPORT_MAX];
        int err;
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
        ifm = nlmsg_data(nlh);
 
        protinfo = nlmsg_find_attr(nlh, sizeof(*ifm), IFLA_PROTINFO);
 
        struct nlattr *tb[FRA_MAX+1];
        int err = -EINVAL, unresolved = 0;
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
        if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*frh)))
                goto errout;
 
        struct nlattr *tb[FRA_MAX+1];
        int err = -EINVAL;
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
        if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*frh)))
                goto errout;
 
 
        struct net_device *dev = NULL;
        int err = -EINVAL;
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
        ASSERT_RTNL();
        if (nlmsg_len(nlh) < sizeof(*ndm))
                goto out;
        struct net_device *dev = NULL;
        int err;
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
        ASSERT_RTNL();
        err = nlmsg_parse(nlh, sizeof(*ndm), tb, NDA_MAX, NULL);
        if (err < 0)
        struct nlattr *tb[NDTA_MAX+1];
        int err;
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
        err = nlmsg_parse(nlh, sizeof(*ndtmsg), tb, NDTA_MAX,
                          nl_neightbl_policy);
        if (err < 0)
 
                        err = PTR_ERR(net);
                        goto errout;
                }
+               if (!ns_capable(net->user_ns, CAP_NET_ADMIN)) {
+                       err = -EPERM;
+                       goto errout;
+               }
                err = dev_change_net_namespace(dev, net, ifname);
                put_net(net);
                if (err)
        struct nlattr *tb[IFLA_MAX+1];
        char ifname[IFNAMSIZ];
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
        err = nlmsg_parse(nlh, sizeof(*ifm), tb, IFLA_MAX, ifla_policy);
        if (err < 0)
                goto errout;
        int err;
        LIST_HEAD(list_kill);
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
        err = nlmsg_parse(nlh, sizeof(*ifm), tb, IFLA_MAX, ifla_policy);
        if (err < 0)
                return err;
        struct nlattr *linkinfo[IFLA_INFO_MAX+1];
        int err;
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
 #ifdef CONFIG_MODULES
 replay:
 #endif
 
 
        ASSERT_RTNL();
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
        err = nlmsg_parse(nlh, sizeof(*ifm), tb, IFA_MAX, ifa_ipv4_policy);
        if (err < 0)
                goto errout;
 
        ASSERT_RTNL();
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
        ifa = rtm_to_ifaddr(net, nlh);
        if (IS_ERR(ifa))
                return PTR_ERR(ifa);
 
        struct fib_table *tb;
        int err;
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
        err = rtm_to_fib_config(net, skb, nlh, &cfg);
        if (err < 0)
                goto errout;
        struct fib_table *tb;
        int err;
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
        err = rtm_to_fib_config(net, skb, nlh, &cfg);
        if (err < 0)
                goto errout;
 
        struct in6_addr *pfx;
        int err;
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
        err = nlmsg_parse(nlh, sizeof(*ifm), tb, IFA_MAX, ifa_ipv6_policy);
        if (err < 0)
                return err;
        u8 ifa_flags;
        int err;
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
        err = nlmsg_parse(nlh, sizeof(*ifm), tb, IFA_MAX, ifa_ipv6_policy);
        if (err < 0)
                return err;
 
        u32 label;
        int err = 0;
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
        err = nlmsg_parse(nlh, sizeof(*ifal), tb, IFAL_MAX, ifal_policy);
        if (err < 0)
                return err;
 
        struct fib6_config cfg;
        int err;
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
        err = rtm_to_fib6_config(skb, nlh, &cfg);
        if (err < 0)
                return err;
        struct fib6_config cfg;
        int err;
 
-       if (!capable(CAP_NET_ADMIN))
-               return -EPERM;
-
        err = rtm_to_fib6_config(skb, nlh, &cfg);
        if (err < 0)
                return err;