bond: Simplify bond_create.
authorEric W. Biederman <ebiederm@aristanetworks.com>
Thu, 29 Oct 2009 14:18:23 +0000 (14:18 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 30 Oct 2009 19:41:19 +0000 (12:41 -0700)
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>
drivers/net/bonding/bond_main.c

index a58a608..17c9580 100644 (file)
@@ -5089,14 +5089,6 @@ 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);
@@ -5104,7 +5096,7 @@ int bond_create(const char *name)
                pr_err(DRV_NAME ": %s: eek! can't alloc netdev!\n",
                       name);
                res = -ENOMEM;
-               goto out_rtnl;
+               goto out;
        }
 
        if (!name) {
@@ -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)