aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/bonding')
-rw-r--r--drivers/net/bonding/bond_main.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 532153db1f9c..d0aade04e49a 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1917,14 +1917,16 @@ err_detach:
1917 bond_detach_slave(bond, new_slave); 1917 bond_detach_slave(bond, new_slave);
1918 if (bond->primary_slave == new_slave) 1918 if (bond->primary_slave == new_slave)
1919 bond->primary_slave = NULL; 1919 bond->primary_slave = NULL;
1920 write_unlock_bh(&bond->lock);
1921 if (bond->curr_active_slave == new_slave) { 1920 if (bond->curr_active_slave == new_slave) {
1921 bond_change_active_slave(bond, NULL);
1922 write_unlock_bh(&bond->lock);
1922 read_lock(&bond->lock); 1923 read_lock(&bond->lock);
1923 write_lock_bh(&bond->curr_slave_lock); 1924 write_lock_bh(&bond->curr_slave_lock);
1924 bond_change_active_slave(bond, NULL);
1925 bond_select_active_slave(bond); 1925 bond_select_active_slave(bond);
1926 write_unlock_bh(&bond->curr_slave_lock); 1926 write_unlock_bh(&bond->curr_slave_lock);
1927 read_unlock(&bond->lock); 1927 read_unlock(&bond->lock);
1928 } else {
1929 write_unlock_bh(&bond->lock);
1928 } 1930 }
1929 slave_disable_netpoll(new_slave); 1931 slave_disable_netpoll(new_slave);
1930 1932