]> git.karo-electronics.de Git - linux-beck.git/blobdiff - drivers/net/bonding/bond_main.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[linux-beck.git] / drivers / net / bonding / bond_main.c
index 532153db1f9c7026235b47bd963b8e06391c5dfd..d0aade04e49aff739294de120d44defaba46fbf2 100644 (file)
@@ -1917,14 +1917,16 @@ err_detach:
        bond_detach_slave(bond, new_slave);
        if (bond->primary_slave == new_slave)
                bond->primary_slave = NULL;
-       write_unlock_bh(&bond->lock);
        if (bond->curr_active_slave == new_slave) {
+               bond_change_active_slave(bond, NULL);
+               write_unlock_bh(&bond->lock);
                read_lock(&bond->lock);
                write_lock_bh(&bond->curr_slave_lock);
-               bond_change_active_slave(bond, NULL);
                bond_select_active_slave(bond);
                write_unlock_bh(&bond->curr_slave_lock);
                read_unlock(&bond->lock);
+       } else {
+               write_unlock_bh(&bond->lock);
        }
        slave_disable_netpoll(new_slave);