mac80211_hwsim: Fix bcn_en_iter to use atomic iteration
authorJouni Malinen <jouni@qca.qualcomm.com>
Wed, 6 Nov 2013 10:06:30 +0000 (12:06 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 25 Nov 2013 15:50:14 +0000 (16:50 +0100)
'mac80211_hwsim: Fix tracking of beaconing for multi-vif' introduced an
iteration of active interfaces into the bss_info_changed handler.
However, it used a wrong type of iteration and could result in a dead
lock since iflist_mtx can already be held. Fix this by using the atomic
version of the iteration function.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/mac80211_hwsim.c

index 3df400c593a14f9e45d1d7e61d2d183ee8c57f86..c72438bb2fafd24b8e59f416d4e4311752dce941 100644 (file)
@@ -1238,7 +1238,7 @@ static void mac80211_hwsim_bss_info_changed(struct ieee80211_hw *hw,
                                              HRTIMER_MODE_REL);
                } else if (!info->enable_beacon) {
                        unsigned int count = 0;
-                       ieee80211_iterate_active_interfaces(
+                       ieee80211_iterate_active_interfaces_atomic(
                                data->hw, IEEE80211_IFACE_ITER_NORMAL,
                                mac80211_hwsim_bcn_en_iter, &count);
                        wiphy_debug(hw->wiphy, "  beaconing vifs remaining: %u",