diff options
author | Stephen Hemminger <shemminger@osdl.org> | 2006-05-10 13:21:53 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2006-05-10 13:21:53 -0700 |
commit | ac05202e8b83594bf6797d241371e6c752f371e6 (patch) | |
tree | 4e75d1f6b14b6b0d3700a00f964a7eaadd04b8f9 /net | |
parent | b17a7c179dd3ce7d04373fddf660eda21efc9db9 (diff) | |
download | lwn-ac05202e8b83594bf6797d241371e6c752f371e6.tar.gz lwn-ac05202e8b83594bf6797d241371e6c752f371e6.zip |
[BRIDGE]: Do sysfs registration inside rtnl.
Now that netdevice sysfs registration is done as part of
register_netdevice; bridge code no longer has to be tricky when adding
it's kobjects to bridges.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/bridge/br_if.c | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c index 59eef42d4a42..ad1c7af65ec8 100644 --- a/net/bridge/br_if.c +++ b/net/bridge/br_if.c @@ -308,26 +308,19 @@ int br_add_bridge(const char *name) if (ret) goto err2; - /* network device kobject is not setup until - * after rtnl_unlock does it's hotplug magic. - * so hold reference to avoid race. - */ - dev_hold(dev); - rtnl_unlock(); - ret = br_sysfs_addbr(dev); - dev_put(dev); - - if (ret) - unregister_netdev(dev); - out: - return ret; + if (ret) + goto err3; + rtnl_unlock(); + return 0; + err3: + unregister_netdev(dev); err2: free_netdev(dev); err1: rtnl_unlock(); - goto out; + return ret; } int br_del_bridge(const char *name) |