]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mac80211: don't flush non-uploaded STAs
authorJohannes Berg <johannes.berg@intel.com>
Thu, 2 Jan 2025 14:20:06 +0000 (16:20 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 13 Jan 2025 14:34:09 +0000 (15:34 +0100)
If STA state is pre-moved to AUTHORIZED (such as in IBSS
scenarios) and insertion fails, the station is freed.
In this case, the driver never knew about the station,
so trying to flush it is unexpected and may crash.

Check if the sta was uploaded to the driver before and
fix this.

Fixes: d00800a289c9 ("wifi: mac80211: add flush_sta method")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250102161730.e3d10970a7c7.I491bbcccc46f835ade07df0640a75f6ed92f20a3@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/driver-ops.h

index c64531e0a60e78f71dea4c84c8de82bd1b66acff..5acecc7bd4a99055549504324188fdda95a15235 100644 (file)
@@ -724,6 +724,9 @@ static inline void drv_flush_sta(struct ieee80211_local *local,
        if (sdata && !check_sdata_in_driver(sdata))
                return;
 
+       if (!sta->uploaded)
+               return;
+
        trace_drv_flush_sta(local, sdata, &sta->sta);
        if (local->ops->flush_sta)
                local->ops->flush_sta(&local->hw, &sdata->vif, &sta->sta);