diff options
| author | Zhao Li <enderaoelyther@gmail.com> | 2026-09-10 14:54:02 +0800 |
|---|---|---|
| committer | Johannes Berg <johannes.berg@intel.com> | 2026-09-22 10:47:51 +0200 |
| commit | e588e83e5c7a0f6d7a77dbbb58927c8c8cfd598e (patch) | |
| tree | 23ba506bae33f3a3f8bafa6b5f7ef073c640b0d2 /tools/perf/scripts/python/stackcollapse.py | |
| parent | 6bdcdb31318c10e6369cff8e5b32c37397e98091 (diff) | |
| download | linux-e588e83e5c7a0f6d7a77dbbb58927c8c8cfd598e.tar.gz linux-e588e83e5c7a0f6d7a77dbbb58927c8c8cfd598e.zip | |
wifi: mac80211: shut down RX BA session timer on teardown
Tearing down an RX BA session can leave the session timer queued on a
freed tid_rx. Later timer-wheel processing and the timer callback itself
then run against freed memory.
An RX BAR handler can dereference tid_rx under RCU before teardown
unpublishes it and stay in its read-side critical section while teardown
deletes the session timer. The stale handler can then rearm the timer
after timer_delete_sync() returns and before the RCU callback frees
tid_rx.
Use timer_shutdown_sync() so rearm attempts become ineffective once
teardown starts. Keep reorder_timer unchanged: teardown marks the session
removed under reorder_lock and its release path checks that state before
rearming. session_timer has no equivalent guard because
ieee80211_rx_h_ctrl() rearms it before taking reorder_lock.
Fixes: a87f736d942c ("mac80211: use RCU for RX aggregation")
Cc: stable@kernel.org # 5.15+
Assisted-by: LLM sparse kasan
Signed-off-by: Zhao Li <enderaoelyther@gmail.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'tools/perf/scripts/python/stackcollapse.py')
0 files changed, 0 insertions, 0 deletions
