bonding: use rcu_dereference() to access curr_active_slave
authordingtianhong <dingtianhong@huawei.com>
Fri, 21 Feb 2014 08:08:53 +0000 (16:08 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 24 Feb 2014 23:28:23 +0000 (18:28 -0500)
The bond_info_show_master already in RCU read-side critical section,
and the we access curr_active_slave without the curr_slave_lock, we
could not sure whether the curr_active_slave will be changed during
the processing, so use RCU to protected the pointer.

Cc: Jay Vosburgh <fubar@us.ibm.com>
Cc: Veaceslav Falico <vfalico@redhat.com>
Cc: Andy Gospodarek <andy@greyhouse.net>
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_procfs.c

index 434df7360999dd6b5ce21e626f842cd588780d3c..588cf39d832ce7153192d337b66fe936c0f3f840 100644 (file)
@@ -69,9 +69,7 @@ static void bond_info_show_master(struct seq_file *seq)
        struct slave *curr;
        int i;
 
-       read_lock(&bond->curr_slave_lock);
-       curr = bond->curr_active_slave;
-       read_unlock(&bond->curr_slave_lock);
+       curr = rcu_dereference(bond->curr_active_slave);
 
        seq_printf(seq, "Bonding Mode: %s",
                   bond_mode_name(bond->params.mode));