Revert "wifi: mac80211: fix RCU list iterations"

This reverts commit f373196093 which is
commit ac35180032fbc5d80b29af00ba4881815ceefcb6 upstream.

It should not have been backported here due to lack of other rcu
changes in the stable branches.

Cc: Johannes Berg <johannes@sipsolutions.net>
Cc: Miriam Rachel Korenblit <miriam.rachel.korenblit@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Greg Kroah-Hartman 2024-11-10 06:02:40 +01:00
parent 6e62dab357
commit bb9982d777
4 changed files with 4 additions and 8 deletions

View File

@ -245,9 +245,7 @@ ieee80211_get_max_required_bw(struct ieee80211_sub_if_data *sdata,
enum nl80211_chan_width max_bw = NL80211_CHAN_WIDTH_20_NOHT; enum nl80211_chan_width max_bw = NL80211_CHAN_WIDTH_20_NOHT;
struct sta_info *sta; struct sta_info *sta;
lockdep_assert_wiphy(sdata->local->hw.wiphy); list_for_each_entry_rcu(sta, &sdata->local->sta_list, list) {
list_for_each_entry(sta, &sdata->local->sta_list, list) {
if (sdata != sta->sdata && if (sdata != sta->sdata &&
!(sta->sdata->bss && sta->sdata->bss == sdata->bss)) !(sta->sdata->bss && sta->sdata->bss == sdata->bss))
continue; continue;

View File

@ -732,7 +732,7 @@ static bool ieee80211_add_vht_ie(struct ieee80211_sub_if_data *sdata,
bool disable_mu_mimo = false; bool disable_mu_mimo = false;
struct ieee80211_sub_if_data *other; struct ieee80211_sub_if_data *other;
list_for_each_entry(other, &local->interfaces, list) { list_for_each_entry_rcu(other, &local->interfaces, list) {
if (other->vif.bss_conf.mu_mimo_owner) { if (other->vif.bss_conf.mu_mimo_owner) {
disable_mu_mimo = true; disable_mu_mimo = true;
break; break;

View File

@ -490,7 +490,7 @@ static void __ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted)
* the scan was in progress; if there was none this will * the scan was in progress; if there was none this will
* just be a no-op for the particular interface. * just be a no-op for the particular interface.
*/ */
list_for_each_entry(sdata, &local->interfaces, list) { list_for_each_entry_rcu(sdata, &local->interfaces, list) {
if (ieee80211_sdata_running(sdata)) if (ieee80211_sdata_running(sdata))
wiphy_work_queue(sdata->local->hw.wiphy, &sdata->work); wiphy_work_queue(sdata->local->hw.wiphy, &sdata->work);
} }

View File

@ -745,9 +745,7 @@ static void __iterate_interfaces(struct ieee80211_local *local,
struct ieee80211_sub_if_data *sdata; struct ieee80211_sub_if_data *sdata;
bool active_only = iter_flags & IEEE80211_IFACE_ITER_ACTIVE; bool active_only = iter_flags & IEEE80211_IFACE_ITER_ACTIVE;
list_for_each_entry_rcu(sdata, &local->interfaces, list, list_for_each_entry_rcu(sdata, &local->interfaces, list) {
lockdep_is_held(&local->iflist_mtx) ||
lockdep_is_held(&local->hw.wiphy->mtx)) {
switch (sdata->vif.type) { switch (sdata->vif.type) {
case NL80211_IFTYPE_MONITOR: case NL80211_IFTYPE_MONITOR:
if (!(sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE)) if (!(sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE))