Files
linux/net
Johannes Berg 06c41bda0e mac80211: agg-tx: don't schedule_and_wake_txq() under sta->lock
When we call ieee80211_agg_start_txq(), that will in turn call
schedule_and_wake_txq(). Called from ieee80211_stop_tx_ba_cb()
this is done under sta->lock, which leads to certain circular
lock dependencies, as reported by Chris Murphy:
https://lore.kernel.org/r/CAJCQCtSXJ5qA4bqSPY=oLRMbv-irihVvP7A2uGutEbXQVkoNaw@mail.gmail.com

In general, ieee80211_agg_start_txq() is usually not called
with sta->lock held, only in this one place. But it's always
called with sta->ampdu_mlme.mtx held, and that's therefore
clearly sufficient.

Change ieee80211_stop_tx_ba_cb() to also call it without the
sta->lock held, by factoring it out of ieee80211_remove_tid_tx()
(which is only called in this one place).

This breaks the locking chain and makes it less likely that
we'll have similar locking chain problems in the future.

Fixes: ba8c3d6f16 ("mac80211: add an intermediate software queue implementation")
Reported-by: Chris Murphy <lists@colorremedies.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20211202152554.f519884c8784.I555fef8e67d93fff3d9a304886c4a9f8b322e591@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2021-12-14 11:19:43 +01:00
..
2021-11-04 21:04:25 +09:00
2021-10-13 09:40:46 -07:00
2021-10-24 13:59:45 +01:00
2021-10-13 09:40:45 -07:00
2021-10-25 11:01:29 -07:00
2021-06-29 11:28:21 -07:00
2021-10-13 09:40:46 -07:00
2021-10-13 09:40:45 -07:00
2021-10-14 23:06:44 +02:00
2021-10-13 09:40:45 -07:00
2021-11-24 19:02:21 -08:00
2021-11-25 19:28:16 -08:00
2021-06-03 15:13:56 -07:00
2021-07-29 15:06:49 +01:00