bonding: fix bond_arp_rcv() race of curr_active_slave
authorVeaceslav Falico <vfalico@redhat.com>
Thu, 20 Feb 2014 11:07:57 +0000 (12:07 +0100)
committerDavid S. Miller <davem@davemloft.net>
Thu, 20 Feb 2014 18:20:55 +0000 (13:20 -0500)
commit010d3c3989706d800ae72253773fa6537cc9f74c
treebc10b84b5f84cd00b934dcb113bee0a76b87d3d9
parenta1eabb0178bcef8eee6286bc646b66e23f4f77ea
bonding: fix bond_arp_rcv() race of curr_active_slave

bond->curr_active_slave can be changed between its deferences, even to
NULL, and thus we might panic.

We're always holding the rcu (rx_handler->bond_handle_frame()->bond_arp_rcv())
so fix this by rcu_dereferencing() it and using the saved.

Reported-by: Ding Tianhong <dingtianhong@huawei.com>
Fixes: aeea64a ("bonding: don't trust arp requests unless active slave really works")
CC: Jay Vosburgh <fubar@us.ibm.com>
CC: Andy Gospodarek <andy@greyhouse.net>
Signed-off-by: Veaceslav Falico <vfalico@redhat.com>
Acked-by: Ding Tianhong <dingtianhong@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_main.c