summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorWilson Kok <wkok@cumulusnetworks.com>2015-06-05 07:52:57 (GMT)
committerDavid S. Miller <davem@davemloft.net>2015-06-07 22:24:54 (GMT)
commit1d7c49037b12016e7056b9f2c990380e2187e766 (patch)
treeeddf23c9e9aa73e2e91447ea9ff8ed2f087d63eb /drivers
parent078b29d7e92e4254b6de16097d0369dde17efe21 (diff)
downloadlinux-1d7c49037b12016e7056b9f2c990380e2187e766.tar.xz
bridge: use _bh spinlock variant for br_fdb_update to avoid lockup
br_fdb_update() can be called in process context in the following way: br_fdb_add() -> __br_fdb_add() -> br_fdb_update() (if NTF_USE flag is set) so we need to use spin_lock_bh because there are softirq users of the hash_lock. One easy way to reproduce this is to modify the bridge utility to set NTF_USE, enable stp and then set maxageing to a low value so br_fdb_cleanup() is called frequently and then just add new entries in a loop. This happens because br_fdb_cleanup() is called from timer/softirq context. These locks were _bh before commit f8ae737deea1 ("[BRIDGE]: forwarding remove unneeded preempt and bh diasables") and at the time that commit was correct because br_fdb_update() couldn't be called from process context, but that changed after commit: 292d1398983f ("bridge: add NTF_USE support") Signed-off-by: Wilson Kok <wkok@cumulusnetworks.com> Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com> Fixes: 292d1398983f ("bridge: add NTF_USE support") Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
0 files changed, 0 insertions, 0 deletions