Commit 98b90f26 authored by Veaceslav Falico's avatar Veaceslav Falico Committed by David S. Miller
Browse files

bonding: RCUify bond_ab_arp_probe

Currently bond_ab_arp_probe() is always called under rcu_read_lock(),
however to work with curr_active_slave we're still holding the

To remove that curr_slave_lock - rcu_dereference the bond's
curr_active_slave and use it further - so that we're sure the slave won't
go away, and we don't care if it will change in the meanwhile.

CC: Jay Vosburgh <>
CC: Andy Gospodarek <>
Signed-off-by: default avatarVeaceslav Falico <>
Signed-off-by: default avatarDavid S. Miller <>
parent bb9fbe2d
......@@ -2605,25 +2605,21 @@ static void bond_ab_arp_commit(struct bonding *bond)
static void bond_ab_arp_probe(struct bonding *bond)
struct slave *slave, *before = NULL, *new_slave = NULL,
*curr_arp_slave = rcu_dereference(bond->current_arp_slave);
*curr_arp_slave = rcu_dereference(bond->current_arp_slave),
*curr_active_slave = rcu_dereference(bond->curr_active_slave);
struct list_head *iter;
bool found = false;
if (curr_arp_slave && bond->curr_active_slave)
if (curr_arp_slave && curr_active_slave)
pr_info("PROBE: c_arp %s && cas %s BAD\n",
if (bond->curr_active_slave) {
bond_arp_send_all(bond, bond->curr_active_slave);
if (curr_active_slave) {
bond_arp_send_all(bond, curr_active_slave);
/* if we don't have a curr_active_slave, search for the next available
* backup slave from the current_arp_slave and make it the candidate
* for becoming the curr_active_slave
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment