bonding: use __dev_get_by_name instead of dev_get_by_name to find interface
The following call chain indicates that bond_do_ioctl() is protected under rtnl_lock. If we use __dev_get_by_name() instead of dev_get_by_name() to find interface handler in it, this would help us avoid to change reference counter of interface once. dev_ioctl() rtnl_lock() dev_ifsioc() bond_do_ioctl() rtnl_unlock() Additionally we also change the coding style in bond_do_ioctl(), letting it more readable for us. Cc: Jay Vosburgh <fubar@us.ibm.com> Cc: Veaceslav Falico <vfalico@redhat.com> Signed-off-by: Ying Xue <ying.xue@windriver.com> Acked-by: Veaceslav Falico <vfalico@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
bdffbb8e26
commit
0917b9334b
|
@ -3213,13 +3213,13 @@ static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd
|
|||
if (!ns_capable(net->user_ns, CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
slave_dev = dev_get_by_name(net, ifr->ifr_slave);
|
||||
slave_dev = __dev_get_by_name(net, ifr->ifr_slave);
|
||||
|
||||
pr_debug("slave_dev=%p:\n", slave_dev);
|
||||
|
||||
if (!slave_dev)
|
||||
res = -ENODEV;
|
||||
else {
|
||||
return -ENODEV;
|
||||
|
||||
pr_debug("slave_dev->name=%s:\n", slave_dev->name);
|
||||
switch (cmd) {
|
||||
case BOND_ENSLAVE_OLD:
|
||||
|
@ -3243,9 +3243,6 @@ static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd
|
|||
res = -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
dev_put(slave_dev);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue