diff options
| -rw-r--r-- | net/bridge/br_if.c | 19 |
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) | |||
| 300 | rtnl_lock(); | 300 | rtnl_lock(); |
| 301 | if (strchr(dev->name, '%')) { | 301 | if (strchr(dev->name, '%')) { |
| 302 | ret = dev_alloc_name(dev, dev->name); | 302 | ret = dev_alloc_name(dev, dev->name); |
| 303 | if (ret < 0) | 303 | if (ret < 0) { |
| 304 | goto err1; | 304 | free_netdev(dev); |
| 305 | goto out; | ||
| 306 | } | ||
| 305 | } | 307 | } |
| 306 | 308 | ||
| 307 | ret = register_netdevice(dev); | 309 | ret = register_netdevice(dev); |
| 308 | if (ret) | 310 | if (ret) |
| 309 | goto err2; | 311 | goto out; |
| 310 | 312 | ||
| 311 | ret = br_sysfs_addbr(dev); | 313 | ret = br_sysfs_addbr(dev); |
| 312 | if (ret) | 314 | if (ret) |
| 313 | goto err3; | 315 | unregister_netdevice(dev); |
| 314 | rtnl_unlock(); | 316 | out: |
| 315 | return 0; | ||
| 316 | |||
| 317 | err3: | ||
| 318 | unregister_netdev(dev); | ||
| 319 | err2: | ||
| 320 | free_netdev(dev); | ||
| 321 | err1: | ||
| 322 | rtnl_unlock(); | 317 | rtnl_unlock(); |
| 323 | return ret; | 318 | return ret; |
| 324 | } | 319 | } |
