]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
bridge: fix br_stp_set_bridge_priority race conditions
authorNikolay Aleksandrov <razor@blackwall.org>
Mon, 15 Jun 2015 17:28:51 +0000 (20:28 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 10 Jul 2015 16:45:33 +0000 (09:45 -0700)
commit4ab5e4c2b831ae15c92efa17c10ff1544ff25af0
tree0db8d92e6c4074bd7ea6dcda8d8f0f6285c96859
parent1f70e491e8287b345e9859486aeb7cca2885ff2a
bridge: fix br_stp_set_bridge_priority race conditions

[ Upstream commit 2dab80a8b486f02222a69daca6859519e05781d9 ]

After the ->set() spinlocks were removed br_stp_set_bridge_priority
was left running without any protection when used via sysfs. It can
race with port add/del and could result in use-after-free cases and
corrupted lists. Tested by running port add/del in a loop with stp
enabled while setting priority in a loop, crashes are easily
reproducible.
The spinlocks around sysfs ->set() were removed in commit:
14f98f258f19 ("bridge: range check STP parameters")
There's also a race condition in the netlink priority support that is
fixed by this change, but it was introduced recently and the fixes tag
covers it, just in case it's needed the commit is:
af615762e972 ("bridge: add ageing_time, stp_state, priority over netlink")

Signed-off-by: Nikolay Aleksandrov <razor@blackwall.org>
Fixes: 14f98f258f19 ("bridge: range check STP parameters")
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/bridge/br_ioctl.c
net/bridge/br_stp_if.c