mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-14 06:24:53 +08:00
bonding: cleanup bond_create
Setting RLB_NULL_INDEX is not needed as this is done in bond_alb_initialize which is called by bond_open. Also reduce the number of rtnl_unlock calls by just using the standard goto cleanup path. Signed-off-by: Jonathan Toppins <jtoppins@redhat.com> Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
2bff369b23
commit
2fa3ee93d1
@ -6218,45 +6218,33 @@ int bond_create(struct net *net, const char *name)
|
||||
{
|
||||
struct net_device *bond_dev;
|
||||
struct bonding *bond;
|
||||
struct alb_bond_info *bond_info;
|
||||
int res;
|
||||
int res = -ENOMEM;
|
||||
|
||||
rtnl_lock();
|
||||
|
||||
bond_dev = alloc_netdev_mq(sizeof(struct bonding),
|
||||
name ? name : "bond%d", NET_NAME_UNKNOWN,
|
||||
bond_setup, tx_queues);
|
||||
if (!bond_dev) {
|
||||
pr_err("%s: eek! can't alloc netdev!\n", name);
|
||||
rtnl_unlock();
|
||||
return -ENOMEM;
|
||||
}
|
||||
if (!bond_dev)
|
||||
goto out;
|
||||
|
||||
/*
|
||||
* Initialize rx_hashtbl_used_head to RLB_NULL_INDEX.
|
||||
* It is set to 0 by default which is wrong.
|
||||
*/
|
||||
bond = netdev_priv(bond_dev);
|
||||
bond_info = &(BOND_ALB_INFO(bond));
|
||||
bond_info->rx_hashtbl_used_head = RLB_NULL_INDEX;
|
||||
|
||||
dev_net_set(bond_dev, net);
|
||||
bond_dev->rtnl_link_ops = &bond_link_ops;
|
||||
|
||||
res = register_netdevice(bond_dev);
|
||||
if (res < 0) {
|
||||
free_netdev(bond_dev);
|
||||
rtnl_unlock();
|
||||
|
||||
return res;
|
||||
goto out;
|
||||
}
|
||||
|
||||
netif_carrier_off(bond_dev);
|
||||
|
||||
bond_work_init_all(bond);
|
||||
|
||||
out:
|
||||
rtnl_unlock();
|
||||
return 0;
|
||||
return res;
|
||||
}
|
||||
|
||||
static int __net_init bond_net_init(struct net *net)
|
||||
|
Loading…
Reference in New Issue
Block a user