ath9k: fix a scheduling while atomic bug in CSA handling
authorFelix Fietkau <nbd@openwrt.org>
Tue, 8 Apr 2014 21:44:26 +0000 (23:44 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 9 Apr 2014 17:55:55 +0000 (13:55 -0400)
Commit "ath9k: prepare for multi-interface CSA support" added a call to
ieee80211_iterate_active_interfaces in atomic context (beacon tasklet),
which is crashing.
Use ieee80211_iterate_active_interfaces_atomic instead.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/beacon.c

index 471e0f624e8116e07e5bda86744ba422ca8e4fea..bd9e634879e69d4b2b33d741f7c4a8c51801ba9f 100644 (file)
@@ -312,10 +312,9 @@ static void ath9k_csa_update_vif(void *data, u8 *mac, struct ieee80211_vif *vif)
 
 void ath9k_csa_update(struct ath_softc *sc)
 {
-       ieee80211_iterate_active_interfaces(sc->hw,
-                                           IEEE80211_IFACE_ITER_NORMAL,
-                                           ath9k_csa_update_vif,
-                                           sc);
+       ieee80211_iterate_active_interfaces_atomic(sc->hw,
+                                                  IEEE80211_IFACE_ITER_NORMAL,
+                                                  ath9k_csa_update_vif, sc);
 }
 
 void ath9k_beacon_tasklet(unsigned long data)