mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 11:01:06 -04:00
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: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
@@ -626,22 +626,22 @@ static int hwsim_fops_ps_write(void *dat, u64 val)
|
||||
old_ps = data->ps;
|
||||
data->ps = val;
|
||||
|
||||
local_bh_disable();
|
||||
if (val == PS_MANUAL_POLL) {
|
||||
ieee80211_iterate_active_interfaces(data->hw,
|
||||
IEEE80211_IFACE_ITER_NORMAL,
|
||||
hwsim_send_ps_poll, data);
|
||||
ieee80211_iterate_active_interfaces_atomic(
|
||||
data->hw, IEEE80211_IFACE_ITER_NORMAL,
|
||||
hwsim_send_ps_poll, data);
|
||||
data->ps_poll_pending = true;
|
||||
} else if (old_ps == PS_DISABLED && val != PS_DISABLED) {
|
||||
ieee80211_iterate_active_interfaces(data->hw,
|
||||
IEEE80211_IFACE_ITER_NORMAL,
|
||||
hwsim_send_nullfunc_ps,
|
||||
data);
|
||||
ieee80211_iterate_active_interfaces_atomic(
|
||||
data->hw, IEEE80211_IFACE_ITER_NORMAL,
|
||||
hwsim_send_nullfunc_ps, data);
|
||||
} else if (old_ps != PS_DISABLED && val == PS_DISABLED) {
|
||||
ieee80211_iterate_active_interfaces(data->hw,
|
||||
IEEE80211_IFACE_ITER_NORMAL,
|
||||
hwsim_send_nullfunc_no_ps,
|
||||
data);
|
||||
ieee80211_iterate_active_interfaces_atomic(
|
||||
data->hw, IEEE80211_IFACE_ITER_NORMAL,
|
||||
hwsim_send_nullfunc_no_ps, data);
|
||||
}
|
||||
local_bh_enable();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user