diff options
author | Eric W. Biederman <ebiederm@aristanetworks.com> | 2009-10-29 10:18:22 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-10-30 15:41:19 -0400 |
commit | 6151b3d435feeeae7487032fcd5c8c7f281ba05c (patch) | |
tree | 0fa59fbfc8c7afb246870308dc742de931d926b3 /drivers/net/bonding/bond_main.c | |
parent | 0c509a6c9393b27a8c5a01acd4a72616206cfc24 (diff) |
bond: Simply bond sysfs group creation
This patch delegates the work of creating the sysfs groups
to the netdev layer and ultimately to the device layer. This
closes races between uevents.
Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bonding/bond_main.c')
-rw-r--r-- | drivers/net/bonding/bond_main.c | 11 |
1 files changed, 1 insertions, 10 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index db82876ceb28..a58a60859da9 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c | |||
@@ -2011,7 +2011,6 @@ static void bond_uninit(struct net_device *bond_dev) | |||
2011 | struct bonding *bond = netdev_priv(bond_dev); | 2011 | struct bonding *bond = netdev_priv(bond_dev); |
2012 | 2012 | ||
2013 | bond_deinit(bond_dev); | 2013 | bond_deinit(bond_dev); |
2014 | bond_destroy_sysfs_entry(bond); | ||
2015 | 2014 | ||
2016 | if (bond->wq) | 2015 | if (bond->wq) |
2017 | destroy_workqueue(bond->wq); | 2016 | destroy_workqueue(bond->wq); |
@@ -3457,9 +3456,6 @@ static int bond_event_changename(struct bonding *bond) | |||
3457 | bond_remove_proc_entry(bond); | 3456 | bond_remove_proc_entry(bond); |
3458 | bond_create_proc_entry(bond); | 3457 | bond_create_proc_entry(bond); |
3459 | 3458 | ||
3460 | bond_destroy_sysfs_entry(bond); | ||
3461 | bond_create_sysfs_entry(bond); | ||
3462 | |||
3463 | return NOTIFY_DONE; | 3459 | return NOTIFY_DONE; |
3464 | } | 3460 | } |
3465 | 3461 | ||
@@ -5078,6 +5074,7 @@ static int bond_init(struct net_device *bond_dev) | |||
5078 | bond_create_proc_entry(bond); | 5074 | bond_create_proc_entry(bond); |
5079 | list_add_tail(&bond->bond_list, &bond_dev_list); | 5075 | list_add_tail(&bond->bond_list, &bond_dev_list); |
5080 | 5076 | ||
5077 | bond_prepare_sysfs_group(bond); | ||
5081 | return 0; | 5078 | return 0; |
5082 | } | 5079 | } |
5083 | 5080 | ||
@@ -5120,15 +5117,9 @@ int bond_create(const char *name) | |||
5120 | if (res < 0) | 5117 | if (res < 0) |
5121 | goto out_bond; | 5118 | goto out_bond; |
5122 | 5119 | ||
5123 | res = bond_create_sysfs_entry(netdev_priv(bond_dev)); | ||
5124 | if (res < 0) | ||
5125 | goto out_unreg; | ||
5126 | |||
5127 | rtnl_unlock(); | 5120 | rtnl_unlock(); |
5128 | return 0; | 5121 | return 0; |
5129 | 5122 | ||
5130 | out_unreg: | ||
5131 | unregister_netdevice(bond_dev); | ||
5132 | out_bond: | 5123 | out_bond: |
5133 | bond_deinit(bond_dev); | 5124 | bond_deinit(bond_dev); |
5134 | out_netdev: | 5125 | out_netdev: |