aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/fpga/fpga-mgr.c
diff options
context:
space:
mode:
authorJohannes Berg <[email protected]>2015-11-17 13:25:21 +0000
committerJohannes Berg <[email protected]>2015-11-17 14:49:25 +0000
commitc2e703a55245bfff3db53b1f7cbe59f1ee8a4339 (patch)
tree99b32f45dd6476c616c95379a80abf6d85aefc23 /drivers/fpga/fpga-mgr.c
parentmac80211: don't advertise NL80211_FEATURE_FULL_AP_CLIENT_STATE (diff)
downloadkernel-c2e703a55245bfff3db53b1f7cbe59f1ee8a4339.tar.gz
kernel-c2e703a55245bfff3db53b1f7cbe59f1ee8a4339.zip
mac80211: mesh: fix call_rcu() usage
When using call_rcu(), the called function may be delayed quite significantly, and without a matching rcu_barrier() there's no way to be sure it has finished. Therefore, global state that could be gone/freed/reused should never be touched in the callback. Fix this in mesh by moving the atomic_dec() into the caller; that's not really a problem since we already unlinked the path and it will be destroyed anyway. This fixes a crash Jouni observed when running certain tests in a certain order, in which the mesh interface was torn down, the memory reused for a function pointer (work struct) and running that then crashed since the pointer had been decremented by 1, resulting in an invalid instruction byte stream. Cc: [email protected] Fixes: eb2b9311fd00 ("mac80211: mesh path table implementation") Reported-by: Jouni Malinen <[email protected]> Signed-off-by: Johannes Berg <[email protected]>
Diffstat (limited to 'drivers/fpga/fpga-mgr.c')
0 files changed, 0 insertions, 0 deletions