diff options
| -rw-r--r-- | net/bridge/br_multicast.c | 2 | ||||
| -rw-r--r-- | net/bridge/br_netlink.c | 13 |
2 files changed, 12 insertions, 3 deletions
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index 5391ca43336a..6d6f26531de2 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c | |||
| @@ -1608,7 +1608,6 @@ void br_multicast_init(struct net_bridge *br) | |||
| 1608 | br_multicast_querier_expired, (unsigned long)br); | 1608 | br_multicast_querier_expired, (unsigned long)br); |
| 1609 | setup_timer(&br->multicast_query_timer, br_multicast_query_expired, | 1609 | setup_timer(&br->multicast_query_timer, br_multicast_query_expired, |
| 1610 | (unsigned long)br); | 1610 | (unsigned long)br); |
| 1611 | br_mdb_init(); | ||
| 1612 | } | 1611 | } |
| 1613 | 1612 | ||
| 1614 | void br_multicast_open(struct net_bridge *br) | 1613 | void br_multicast_open(struct net_bridge *br) |
| @@ -1633,7 +1632,6 @@ void br_multicast_stop(struct net_bridge *br) | |||
| 1633 | del_timer_sync(&br->multicast_querier_timer); | 1632 | del_timer_sync(&br->multicast_querier_timer); |
| 1634 | del_timer_sync(&br->multicast_query_timer); | 1633 | del_timer_sync(&br->multicast_query_timer); |
| 1635 | 1634 | ||
| 1636 | br_mdb_uninit(); | ||
| 1637 | spin_lock_bh(&br->multicast_lock); | 1635 | spin_lock_bh(&br->multicast_lock); |
| 1638 | mdb = mlock_dereference(br->mdb, br); | 1636 | mdb = mlock_dereference(br->mdb, br); |
| 1639 | if (!mdb) | 1637 | if (!mdb) |
diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c index 97ba0189c6f7..5dc66abcc9e2 100644 --- a/net/bridge/br_netlink.c +++ b/net/bridge/br_netlink.c | |||
| @@ -299,10 +299,21 @@ struct rtnl_link_ops br_link_ops __read_mostly = { | |||
| 299 | 299 | ||
| 300 | int __init br_netlink_init(void) | 300 | int __init br_netlink_init(void) |
| 301 | { | 301 | { |
| 302 | return rtnl_link_register(&br_link_ops); | 302 | int err; |
| 303 | |||
| 304 | br_mdb_init(); | ||
| 305 | err = rtnl_link_register(&br_link_ops); | ||
| 306 | if (err) | ||
| 307 | goto out; | ||
| 308 | |||
| 309 | return 0; | ||
| 310 | out: | ||
| 311 | br_mdb_uninit(); | ||
| 312 | return err; | ||
| 303 | } | 313 | } |
| 304 | 314 | ||
| 305 | void __exit br_netlink_fini(void) | 315 | void __exit br_netlink_fini(void) |
| 306 | { | 316 | { |
| 317 | br_mdb_uninit(); | ||
| 307 | rtnl_link_unregister(&br_link_ops); | 318 | rtnl_link_unregister(&br_link_ops); |
| 308 | } | 319 | } |
