This is a classic RCU-induced Use-After-Free in mac80211's Block Ack session teardown. The bug lives in ieee80211_stop_tx_ba_cb: the code calls ieee80211_remove_tid_tx() to schedule the tid_tx object for deferred freeing via kfree_rcu, then releases the wiphy mutex, then dereferences the ndp field from that same object in the send_delba call that follows. The problem is that RCU's grace period can complete during the local_bh_enable() inside ieee80211_agg_start_txq() — which happens after the unlock but before the dereference. The object is freed, the pointer becomes dangling, and the subsequent field access is a UAF.

The fix is a one-liner: read ndp into a local variable while holding the lock, then use that local after the unlock. This pattern — read into a local under RCU protection, then use the local after the critical section — is the standard mitigation for this entire class of bugs.

What makes this notable is that the vulnerability didn't arise from API misuse or a concurrency bug in the traditional sense. The developer followed what any code reviewer would consider a safe sequence: remove, unlock, access. With refcounting or mutex-protected ownership, that would be correct. But RCU decouples removal from memory free in a way that violates that intuition. The grace period completes in a window that is invisible in the call chain — no compiler warning, no lockdep annotation, nothing marks where the critical section ends and the danger begins.

The deeper concern is structural: BA session teardown paths in mac80211 accumulate callers over time as features are added, and each addition extends a cleanup path where the original RCU synchronization assumptions are no longer visible. The constraint that send_delba only triggers on AGG_STOP_LOCAL_REQUEST is thin justification — cleanup paths are precisely where these assumptions rot, because developers reason 'this runs at teardown, nothing concurrent can happen.' That's the sequential mental model that RCU fundamentally violates. The one-line fix is trivial; the discipline required to avoid needing it is not.