diff options
-rw-r--r-- | drivers/net/bonding/bond_main.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index b920d829692a..a20b5850e7ce 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c | |||
@@ -892,9 +892,15 @@ static void bond_do_fail_over_mac(struct bonding *bond, | |||
892 | 892 | ||
893 | switch (bond->params.fail_over_mac) { | 893 | switch (bond->params.fail_over_mac) { |
894 | case BOND_FOM_ACTIVE: | 894 | case BOND_FOM_ACTIVE: |
895 | if (new_active) | 895 | if (new_active) { |
896 | memcpy(bond->dev->dev_addr, new_active->dev->dev_addr, | 896 | memcpy(bond->dev->dev_addr, new_active->dev->dev_addr, |
897 | new_active->dev->addr_len); | 897 | new_active->dev->addr_len); |
898 | write_unlock_bh(&bond->curr_slave_lock); | ||
899 | read_unlock(&bond->lock); | ||
900 | call_netdevice_notifiers(NETDEV_CHANGEADDR, bond->dev); | ||
901 | read_lock(&bond->lock); | ||
902 | write_lock_bh(&bond->curr_slave_lock); | ||
903 | } | ||
898 | break; | 904 | break; |
899 | case BOND_FOM_FOLLOW: | 905 | case BOND_FOM_FOLLOW: |
900 | /* | 906 | /* |