From e0bfcb3e1b977353d070372c1c6cf2815dac7ca7 Mon Sep 17 00:00:00 2001 From: "nikolay@redhat.com" Date: Mon, 22 Apr 2013 08:12:22 +0000 Subject: [PATCH] --- yaml --- r: 369885 b: refs/heads/master c: c6cdcf6d82bc8f53e64ad59464e0114fe48e28bb h: refs/heads/master i: 369883: af8b35f2ffd05733ed076b46094187c2870a3dfa v: v3 --- [refs] | 2 +- trunk/drivers/net/bonding/bond_main.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 4d23fb938fd0..c05f1824f025 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ecf01c22be034690b621d92c9ff488d607a9995a +refs/heads/master: c6cdcf6d82bc8f53e64ad59464e0114fe48e28bb diff --git a/trunk/drivers/net/bonding/bond_main.c b/trunk/drivers/net/bonding/bond_main.c index dbbea0eec134..7db40de1b41f 100644 --- a/trunk/drivers/net/bonding/bond_main.c +++ b/trunk/drivers/net/bonding/bond_main.c @@ -1915,14 +1915,16 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev) 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);