aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding/bond_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/bonding/bond_main.c')
-rw-r--r--drivers/net/bonding/bond_main.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index f0f5eab0fab1..dcd331bd0c17 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1687,13 +1687,15 @@ static int __bond_release_one(struct net_device *bond_dev,
1687 * for this slave anymore. 1687 * for this slave anymore.
1688 */ 1688 */
1689 netdev_rx_handler_unregister(slave_dev); 1689 netdev_rx_handler_unregister(slave_dev);
1690 write_lock_bh(&bond->lock);
1691 1690
1692 /* Inform AD package of unbinding of slave. */ 1691 if (BOND_MODE(bond) == BOND_MODE_8023AD) {
1693 if (BOND_MODE(bond) == BOND_MODE_8023AD) 1692 /* Sync against bond_3ad_rx_indication and
1693 * bond_3ad_state_machine_handler
1694 */
1695 write_lock_bh(&bond->curr_slave_lock);
1694 bond_3ad_unbind_slave(slave); 1696 bond_3ad_unbind_slave(slave);
1695 1697 write_unlock_bh(&bond->curr_slave_lock);
1696 write_unlock_bh(&bond->lock); 1698 }
1697 1699
1698 netdev_info(bond_dev, "Releasing %s interface %s\n", 1700 netdev_info(bond_dev, "Releasing %s interface %s\n",
1699 bond_is_active_slave(slave) ? "active" : "backup", 1701 bond_is_active_slave(slave) ? "active" : "backup",