wifi: mac80211: fix ML reconf reset in disconnect
authorJohannes Berg <johannes.berg@intel.com>
Sat, 8 Mar 2025 21:03:39 +0000 (23:03 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 11 Mar 2025 09:53:10 +0000 (10:53 +0100)
If disconnecting while ML reconfiguration is in progress,
the data isn't freed because the reset call is too late,
after the vif already switches to non-MLD. Move the call
to fix that.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Reviewed-by: Ilan Peer <ilan.peer@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250308225541.abaea69cde42.I7e6b35731ded94fc2d68a2d4ecf81873712c268e@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/mlme.c

index 60a585caa96de35a229ccb65440156e74b2c700a..9c4d4f04b23eb9df02ea3454777e700ed1b8a063 100644 (file)
@@ -4152,16 +4152,16 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
        wiphy_work_cancel(sdata->local->hw.wiphy,
                          &ifmgd->teardown_ttlm_work);
 
-       ieee80211_vif_set_links(sdata, 0, 0);
-
-       ifmgd->mcast_seq_last = IEEE80211_SN_MODULO;
-
        /* if disconnection happens in the middle of the ML reconfiguration
         * flow, cfg80211 must called to release the BSS references obtained
         * when the flow started.
         */
        ieee80211_ml_reconf_reset(sdata);
 
+       ieee80211_vif_set_links(sdata, 0, 0);
+
+       ifmgd->mcast_seq_last = IEEE80211_SN_MODULO;
+
        ifmgd->epcs.enabled = false;
        ifmgd->epcs.dialog_token = 0;
 }