summaryrefslogtreecommitdiff
path: root/net/bridge/br_if.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-06-05 16:59:46 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-05 16:59:46 -0700
commitff3ea47c623276e9772cbc268471224648d5a7fe (patch)
treeecb77b11659f85abefed71aa075d4f879a7cc116 /net/bridge/br_if.c
parenta8c725045eb2eaa6c28a5493cb193f47a5c4afe4 (diff)
parent36485707bbd9729e0c52315b173aeed9bc2303dd (diff)
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: [BRIDGE]: fix locking and memory leak in br_add_bridge [IRDA]: Missing allocation result check in irlap_change_speed(). [PPPOE]: Missing result check in __pppoe_xmit(). [NET]: Eliminate unused /proc/sys/net/ethernet [NETCONSOLE]: Clean up initcall warning. [TCP]: Avoid skb_pull if possible when trimming head
Diffstat (limited to 'net/bridge/br_if.c')
-rw-r--r--net/bridge/br_if.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
index ad1c7af65ec8..f5d47bf4f967 100644
--- a/net/bridge/br_if.c
+++ b/net/bridge/br_if.c
@@ -300,25 +300,20 @@ int br_add_bridge(const char *name)
rtnl_lock();
if (strchr(dev->name, '%')) {
ret = dev_alloc_name(dev, dev->name);
- if (ret < 0)
- goto err1;
+ if (ret < 0) {
+ free_netdev(dev);
+ goto out;
+ }
}
ret = register_netdevice(dev);
if (ret)
- goto err2;
+ goto out;
ret = br_sysfs_addbr(dev);
if (ret)
- goto err3;
- rtnl_unlock();
- return 0;
-
- err3:
- unregister_netdev(dev);
- err2:
- free_netdev(dev);
- err1:
+ unregister_netdevice(dev);
+ out:
rtnl_unlock();
return ret;
}