]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: mac80211: cancel multi-link reconf work on disconnect
authorJohannes Berg <johannes.berg@intel.com>
Mon, 6 May 2024 19:10:33 +0000 (21:10 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 3 Aug 2024 06:59:33 +0000 (08:59 +0200)
[ Upstream commit 53b739fd46462dc40fd18390d76f2ee05c18ea3a ]

This work shouldn't run after we're disconnecting. Cancel it earlier
(and then don't cancel it in stop later.)

Fixes: 8eb8dd2ffbbb ("wifi: mac80211: Support link removal using Reconfiguration ML element")
Reviewed-by: Ilan Peer <ilan.peer@intel.com>
Reviewed-by: Miriam Rachel Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240506211034.ac754794279f.Ib9fbb1dab50c6b67f6de9be09a6c452ce89bbd50@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/mac80211/mlme.c

index edac1578d425cef620127e5a81183d8212689e9f..72e38e42f6da0ab8023e9202a0b76dd75638d5a6 100644 (file)
@@ -3289,6 +3289,11 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
 
        wiphy_delayed_work_cancel(sdata->local->hw.wiphy,
                                  &ifmgd->neg_ttlm_timeout_work);
+
+       sdata->u.mgd.removed_links = 0;
+       wiphy_delayed_work_cancel(sdata->local->hw.wiphy,
+                                 &sdata->u.mgd.ml_reconf_work);
+
        ieee80211_vif_set_links(sdata, 0, 0);
 
        ifmgd->mcast_seq_last = IEEE80211_SN_MODULO;
@@ -8708,8 +8713,6 @@ void ieee80211_mgd_stop(struct ieee80211_sub_if_data *sdata)
                          &ifmgd->teardown_ttlm_work);
        wiphy_delayed_work_cancel(sdata->local->hw.wiphy,
                                  &ifmgd->tdls_peer_del_work);
-       wiphy_delayed_work_cancel(sdata->local->hw.wiphy,
-                                 &ifmgd->ml_reconf_work);
        wiphy_delayed_work_cancel(sdata->local->hw.wiphy, &ifmgd->ttlm_work);
        wiphy_delayed_work_cancel(sdata->local->hw.wiphy,
                                  &ifmgd->neg_ttlm_timeout_work);