mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
bonding: fix race condition in bonding_store_slaves_active
[ Upstream commit e196c0e579 ]
Race between bonding_store_slaves_active() and slave manipulation
functions. The bond_for_each_slave use in bonding_store_slaves_active()
is not protected by any synchronization mechanism.
NULL pointer dereference is easy to reach.
Fixed by acquiring the bond->lock for the slave walk.
v2: Make description text < 75 columns
Signed-off-by: Nikolay Aleksandrov <nikolay@redhat.com>
Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
a8695e1c80
commit
cefbc05835
@@ -1524,6 +1524,7 @@ static ssize_t bonding_store_slaves_active(struct device *d,
|
||||
goto out;
|
||||
}
|
||||
|
||||
read_lock(&bond->lock);
|
||||
bond_for_each_slave(bond, slave, i) {
|
||||
if (!bond_is_active_slave(slave)) {
|
||||
if (new_value)
|
||||
@@ -1532,6 +1533,7 @@ static ssize_t bonding_store_slaves_active(struct device *d,
|
||||
slave->inactive = 1;
|
||||
}
|
||||
}
|
||||
read_unlock(&bond->lock);
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user