summaryrefslogtreecommitdiffstats
path: root/ipc
diff options
context:
space:
mode:
authorNikolay Aleksandrov2014-02-26 14:20:30 +0100
committerDavid S. Miller2014-02-26 23:09:09 +0100
commitee6154e11eeccd4ae32c4881415dbd902a869592 (patch)
treeee61b4fe5ed2665a595d9119afe433608c19e21e /ipc
parentAX88179_178A: Add VID:DID for Lenovo OneLinkDock Gigabit LAN (diff)
downloadkernel-qcow2-linux-ee6154e11eeccd4ae32c4881415dbd902a869592.tar.gz
kernel-qcow2-linux-ee6154e11eeccd4ae32c4881415dbd902a869592.tar.xz
kernel-qcow2-linux-ee6154e11eeccd4ae32c4881415dbd902a869592.zip
bonding: fix a div error caused by the slave release path
There's a bug in the slave release function which leads the transmit functions which use the bond->slave_cnt to a div by 0 because we might just have released our last slave and made slave_cnt == 0 but at the same time we may have a transmitter after the check for an empty list which will fetch it and use it in the slave id calculation. Fix it by moving the slave_cnt after synchronize_rcu so if this was our last slave any new transmitters will see an empty slave list which is checked after rcu lock but before calling the mode transmit functions which rely on bond->slave_cnt. Fixes: 278b208375 ("bonding: initial RCU conversion") CC: Veaceslav Falico <vfalico@redhat.com> CC: Andy Gospodarek <andy@greyhouse.net> CC: Jay Vosburgh <fubar@us.ibm.com> CC: David S. Miller <davem@davemloft.net> Signed-off-by: Nikolay Aleksandrov <nikolay@redhat.com> Acked-by: Veaceslav Falico <vfalico@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'ipc')
0 files changed, 0 insertions, 0 deletions