[BRIDGE]: Do sysfs registration inside rtnl.
authorStephen Hemminger <shemminger@osdl.org>
Wed, 10 May 2006 20:21:53 +0000 (13:21 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 10 May 2006 20:21:53 +0000 (13:21 -0700)
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>
net/bridge/br_if.c

index 59eef42d4a4259052c67dbe91f07f908767c9437..ad1c7af65ec8dcb944b59d2310df3c9ec539805d 100644 (file)
@@ -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)