|
@@ -2266,6 +2266,10 @@ static int do_setlink(const struct sk_buff *skb,
|
|
|
const struct net_device_ops *ops = dev->netdev_ops;
|
|
|
int err;
|
|
|
|
|
|
+ err = validate_linkmsg(dev, tb);
|
|
|
+ if (err < 0)
|
|
|
+ return err;
|
|
|
+
|
|
|
if (tb[IFLA_NET_NS_PID] || tb[IFLA_NET_NS_FD] || tb[IFLA_IF_NETNSID]) {
|
|
|
struct net *net = rtnl_link_get_net_capable(skb, dev_net(dev),
|
|
|
tb, CAP_NET_ADMIN);
|
|
@@ -2629,10 +2633,6 @@ static int rtnl_setlink(struct sk_buff *skb, struct nlmsghdr *nlh,
|
|
|
goto errout;
|
|
|
}
|
|
|
|
|
|
- err = validate_linkmsg(dev, tb);
|
|
|
- if (err < 0)
|
|
|
- goto errout;
|
|
|
-
|
|
|
err = do_setlink(skb, dev, ifm, extack, tb, ifname, 0);
|
|
|
errout:
|
|
|
return err;
|