|
@@ -3612,6 +3612,7 @@ static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd
|
|
|
struct ifslave k_sinfo;
|
|
|
struct ifslave __user *u_sinfo = NULL;
|
|
|
struct mii_ioctl_data *mii = NULL;
|
|
|
+ struct net *net;
|
|
|
int res = 0;
|
|
|
|
|
|
pr_debug("bond_ioctl: master=%s, cmd=%d\n", bond_dev->name, cmd);
|
|
@@ -3678,10 +3679,12 @@ static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- if (!capable(CAP_NET_ADMIN))
|
|
|
+ net = dev_net(bond_dev);
|
|
|
+
|
|
|
+ if (!ns_capable(net->user_ns, CAP_NET_ADMIN))
|
|
|
return -EPERM;
|
|
|
|
|
|
- slave_dev = dev_get_by_name(dev_net(bond_dev), ifr->ifr_slave);
|
|
|
+ slave_dev = dev_get_by_name(net, ifr->ifr_slave);
|
|
|
|
|
|
pr_debug("slave_dev=%p:\n", slave_dev);
|
|
|
|