diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 943a899fbfde8e7d4d2ef2c21d5ed73d1231b37a..5e7987bba5834a20749922c5b283fc182f57bb43 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -577,8 +577,6 @@ static void bond_hw_addr_flush(struct net_device *bond_dev, static void bond_hw_addr_swap(struct bonding *bond, struct slave *new_active, struct slave *old_active) { - ASSERT_RTNL(); - if (old_active) { if (bond->dev->flags & IFF_PROMISC) dev_set_promiscuity(old_active->dev, -1); @@ -876,6 +874,8 @@ void bond_select_active_slave(struct bonding *bond) struct slave *best_slave; int rv; + ASSERT_RTNL(); + best_slave = bond_find_best_slave(bond); if (best_slave != rtnl_dereference(bond->curr_active_slave)) { bond_change_active_slave(bond, best_slave); @@ -2004,7 +2004,6 @@ static void bond_miimon_commit(struct bonding *bond) } do_failover: - ASSERT_RTNL(); block_netpoll_tx(); bond_select_active_slave(bond); unblock_netpoll_tx(); @@ -2598,7 +2597,6 @@ static void bond_ab_arp_commit(struct bonding *bond) } do_failover: - ASSERT_RTNL(); block_netpoll_tx(); bond_select_active_slave(bond); unblock_netpoll_tx();