diff options
author | Jay Vosburgh <fubar@us.ibm.com> | 2007-01-19 18:15:38 -0800 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-02-05 16:58:47 -0500 |
commit | 09c892797688312dc8a3c4d8b37dcb7207c1d48a (patch) | |
tree | adf75f427842fdb6d112fb246133a7925b659165 | |
parent | e4b91c484611da385e34ff0f8bb2744ae2c735b7 (diff) | |
download | op-kernel-dev-09c892797688312dc8a3c4d8b37dcb7207c1d48a.zip op-kernel-dev-09c892797688312dc8a3c4d8b37dcb7207c1d48a.tar.gz |
bonding: fix error check in sysfs creation
The existing code did not correctly handle failures to create
the per-interface sysfs group for bonding.
Modified code to notice errors, and correctly unwind.
Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r-- | drivers/net/bonding/bond_main.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 07b9d1f..d3801a0 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -4756,14 +4756,19 @@ int bond_create(char *name, struct bond_params *params, struct bonding **newbond rtnl_unlock(); /* allows sysfs registration of net device */ res = bond_create_sysfs_entry(bond_dev->priv); - goto done; + if (res < 0) { + rtnl_lock(); + goto out_bond; + } + + return 0; + out_bond: bond_deinit(bond_dev); out_netdev: free_netdev(bond_dev); out_rtnl: rtnl_unlock(); -done: return res; } |