diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/bridge/br_mdb.c | 7 | ||||
-rw-r--r-- | net/bridge/br_multicast.c | 1 | ||||
-rw-r--r-- | net/bridge/br_netlink.c | 1 | ||||
-rw-r--r-- | net/bridge/br_private.h | 1 |
4 files changed, 9 insertions, 1 deletions
diff --git a/net/bridge/br_mdb.c b/net/bridge/br_mdb.c index 9cf5d2b28c76..3e05cc32da50 100644 --- a/net/bridge/br_mdb.c +++ b/net/bridge/br_mdb.c | |||
@@ -482,3 +482,10 @@ void br_mdb_init(void) | |||
482 | rtnl_register(PF_BRIDGE, RTM_NEWMDB, br_mdb_add, NULL, NULL); | 482 | rtnl_register(PF_BRIDGE, RTM_NEWMDB, br_mdb_add, NULL, NULL); |
483 | rtnl_register(PF_BRIDGE, RTM_DELMDB, br_mdb_del, NULL, NULL); | 483 | rtnl_register(PF_BRIDGE, RTM_DELMDB, br_mdb_del, NULL, NULL); |
484 | } | 484 | } |
485 | |||
486 | void br_mdb_uninit(void) | ||
487 | { | ||
488 | rtnl_unregister(PF_BRIDGE, RTM_GETMDB); | ||
489 | rtnl_unregister(PF_BRIDGE, RTM_NEWMDB); | ||
490 | rtnl_unregister(PF_BRIDGE, RTM_DELMDB); | ||
491 | } | ||
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index dce9defae3c6..5391ca43336a 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c | |||
@@ -1633,6 +1633,7 @@ void br_multicast_stop(struct net_bridge *br) | |||
1633 | del_timer_sync(&br->multicast_querier_timer); | 1633 | del_timer_sync(&br->multicast_querier_timer); |
1634 | del_timer_sync(&br->multicast_query_timer); | 1634 | del_timer_sync(&br->multicast_query_timer); |
1635 | 1635 | ||
1636 | br_mdb_uninit(); | ||
1636 | spin_lock_bh(&br->multicast_lock); | 1637 | spin_lock_bh(&br->multicast_lock); |
1637 | mdb = mlock_dereference(br->mdb, br); | 1638 | mdb = mlock_dereference(br->mdb, br); |
1638 | if (!mdb) | 1639 | if (!mdb) |
diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c index dead9dfe865b..97ba0189c6f7 100644 --- a/net/bridge/br_netlink.c +++ b/net/bridge/br_netlink.c | |||
@@ -305,5 +305,4 @@ int __init br_netlink_init(void) | |||
305 | void __exit br_netlink_fini(void) | 305 | void __exit br_netlink_fini(void) |
306 | { | 306 | { |
307 | rtnl_link_unregister(&br_link_ops); | 307 | rtnl_link_unregister(&br_link_ops); |
308 | rtnl_unregister_all(PF_BRIDGE); | ||
309 | } | 308 | } |
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h index 49b85af44016..8d83be5ffedc 100644 --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h | |||
@@ -447,6 +447,7 @@ extern struct net_bridge_port_group *br_multicast_new_port_group( | |||
447 | struct net_bridge_port_group *next, | 447 | struct net_bridge_port_group *next, |
448 | unsigned char state); | 448 | unsigned char state); |
449 | extern void br_mdb_init(void); | 449 | extern void br_mdb_init(void); |
450 | extern void br_mdb_uninit(void); | ||
450 | extern void br_mdb_notify(struct net_device *dev, struct net_bridge_port *port, | 451 | extern void br_mdb_notify(struct net_device *dev, struct net_bridge_port *port, |
451 | struct br_ip *group, int type); | 452 | struct br_ip *group, int type); |
452 | 453 | ||