Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 30c15ba9 authored by Eric W. Biederman's avatar Eric W. Biederman Committed by David S. Miller
Browse files

bond: Simplify bond_create.



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: default avatarEric W. Biederman <ebiederm@aristanetworks.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6151b3d4
Loading
Loading
Loading
Loading
+4 −18
Original line number Diff line number Diff line
@@ -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)