Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a809ca5e authored by Johannes Berg's avatar Johannes Berg
Browse files

mac80211_hwsim: fix PS debugfs file locking



The functions called within the iterators must be called with
tasklets disabled, so use atomic iteration like the rest of
the code and disable tasklets around the whole operation.

Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 79c892b8
Loading
Loading
Loading
Loading
+11 −11
Original line number Original line Diff line number Diff line
@@ -626,22 +626,22 @@ static int hwsim_fops_ps_write(void *dat, u64 val)
	old_ps = data->ps;
	old_ps = data->ps;
	data->ps = val;
	data->ps = val;


	local_bh_disable();
	if (val == PS_MANUAL_POLL) {
	if (val == PS_MANUAL_POLL) {
		ieee80211_iterate_active_interfaces(data->hw,
		ieee80211_iterate_active_interfaces_atomic(
						    IEEE80211_IFACE_ITER_NORMAL,
			data->hw, IEEE80211_IFACE_ITER_NORMAL,
			hwsim_send_ps_poll, data);
			hwsim_send_ps_poll, data);
		data->ps_poll_pending = true;
		data->ps_poll_pending = true;
	} else if (old_ps == PS_DISABLED && val != PS_DISABLED) {
	} else if (old_ps == PS_DISABLED && val != PS_DISABLED) {
		ieee80211_iterate_active_interfaces(data->hw,
		ieee80211_iterate_active_interfaces_atomic(
						    IEEE80211_IFACE_ITER_NORMAL,
			data->hw, IEEE80211_IFACE_ITER_NORMAL,
						    hwsim_send_nullfunc_ps,
			hwsim_send_nullfunc_ps, data);
						    data);
	} else if (old_ps != PS_DISABLED && val == PS_DISABLED) {
	} else if (old_ps != PS_DISABLED && val == PS_DISABLED) {
		ieee80211_iterate_active_interfaces(data->hw,
		ieee80211_iterate_active_interfaces_atomic(
						    IEEE80211_IFACE_ITER_NORMAL,
			data->hw, IEEE80211_IFACE_ITER_NORMAL,
						    hwsim_send_nullfunc_no_ps,
			hwsim_send_nullfunc_no_ps, data);
						    data);
	}
	}
	local_bh_enable();


	return 0;
	return 0;
}
}