diff options
author | Johannes Berg <johannes.berg@intel.com> | 2024-05-15 13:53:19 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2024-05-29 15:25:10 +0200 |
commit | 177c6ae9725d783f9e96f02593ce8fb2639be22f (patch) | |
tree | c576b84f865c79e872c20c825b556c06127321ec /net/mac80211/util.c | |
parent | 02c665f048a439c0d58cc45334c94634bd7c18e6 (diff) |
wifi: mac80211: handle tasklet frames before stopping
The code itself doesn't want to handle frames from the driver
if it's already stopped, but if the tasklet was queued before
and runs after the stop, then all bets are off. Flush queues
before actually stopping, RX should be off at this point since
all the interfaces are removed already, etc.
Reported-by: syzbot+8830db5d3593b5546d2e@syzkaller.appspotmail.com
Link: https://msgid.link/20240515135318.b05f11385c9a.I41c1b33a2e1814c3a7ef352cd7f2951b91785617@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/util.c')
-rw-r--r-- | net/mac80211/util.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index 0b893e958959..283bfc99417e 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c @@ -1567,6 +1567,8 @@ u32 ieee80211_sta_get_rates(struct ieee80211_sub_if_data *sdata, void ieee80211_stop_device(struct ieee80211_local *local) { + ieee80211_handle_queued_frames(local); + ieee80211_led_radio(local, false); ieee80211_mod_tpt_led_trig(local, 0, IEEE80211_TPT_LEDTRIG_FL_RADIO); |