summaryrefslogtreecommitdiff
path: root/net/core/failover.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/core/failover.c')
-rw-r--r--net/core/failover.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/net/core/failover.c b/net/core/failover.c
index 11bb183c7a1b..4c3894a02cb7 100644
--- a/net/core/failover.c
+++ b/net/core/failover.c
@@ -12,6 +12,7 @@
#include <uapi/linux/if_arp.h>
#include <linux/rtnetlink.h>
#include <linux/if_vlan.h>
+#include <net/netdev_lock.h>
#include <net/failover.h>
static LIST_HEAD(failover_list);
@@ -221,8 +222,11 @@ failover_existing_slave_register(struct net_device *failover_dev)
for_each_netdev(net, dev) {
if (netif_is_failover(dev))
continue;
- if (ether_addr_equal(failover_dev->perm_addr, dev->perm_addr))
+ if (ether_addr_equal(failover_dev->perm_addr, dev->perm_addr)) {
+ netdev_lock_ops(dev);
failover_slave_register(dev);
+ netdev_unlock_ops(dev);
+ }
}
rtnl_unlock();
}
@@ -298,9 +302,7 @@ EXPORT_SYMBOL_GPL(failover_unregister);
static __init int
failover_init(void)
{
- register_netdevice_notifier(&failover_notifier);
-
- return 0;
+ return register_netdevice_notifier(&failover_notifier);
}
module_init(failover_init);