Skip to content

Commit

Permalink
bond: Simplify bond_create.
Browse files Browse the repository at this point in the history
Stop calling dev_get_by_name to see if the bond device already
exists.  register_netdevice already does that.

Stop calling bond_deinit if register_netdevice fails as bond_uninit
is guaranteed to be called if bond_init succeeds.

Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Eric W. Biederman authored and David S. Miller committed Oct 30, 2009
1 parent 6151b3d commit 30c15ba
Showing 1 changed file with 4 additions and 18 deletions.
22 changes: 4 additions & 18 deletions drivers/net/bonding/bond_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -5089,22 +5089,14 @@ int bond_create(const char *name)
int res;

rtnl_lock();
/* Check to see if the bond already exists. */
/* FIXME: pass netns from caller */
if (name && __dev_get_by_name(&init_net, name)) {
pr_err(DRV_NAME ": cannot add bond %s; already exists\n",
name);
res = -EEXIST;
goto out_rtnl;
}

bond_dev = alloc_netdev(sizeof(struct bonding), name ? name : "",
bond_setup);
if (!bond_dev) {
pr_err(DRV_NAME ": %s: eek! can't alloc netdev!\n",
name);
res = -ENOMEM;
goto out_rtnl;
goto out;
}

if (!name) {
Expand All @@ -5114,19 +5106,13 @@ int bond_create(const char *name)
}

res = register_netdevice(bond_dev);
if (res < 0)
goto out_bond;

out:
rtnl_unlock();
return 0;

out_bond:
bond_deinit(bond_dev);
return res;
out_netdev:
free_netdev(bond_dev);
out_rtnl:
rtnl_unlock();
return res;
goto out;
}

static int __init bonding_init(void)
Expand Down

0 comments on commit 30c15ba

Please sign in to comment.