]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
mac80211: properly drop the connection in case of invalid CSA IE
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Fri, 9 Apr 2021 09:40:16 +0000 (12:40 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 May 2021 08:29:34 +0000 (10:29 +0200)
[ Upstream commit 253907ab8bc0818639af382f6398810fa1f022b3 ]

In case the frequency is invalid, ieee80211_parse_ch_switch_ie
will fail and we may not even reach the check in
ieee80211_sta_process_chanswitch. Drop the connection
in case ieee80211_parse_ch_switch_ie failed, but still
take into account the CSA mode to remember not to send
a deauth frame in case if it is forbidden to.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20210409123755.34712ef96a0a.I75d7ad7f1d654e8b0aa01cd7189ff00a510512b3@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/mac80211/mlme.c

index c9eb75603576601fce10cbc131a9d1e15059116f..fe71c1ca984a6c72ff7b9b8fdd01e20d3dec6451 100644 (file)
@@ -1405,11 +1405,8 @@ ieee80211_sta_process_chanswitch(struct ieee80211_sub_if_data *sdata,
                ch_switch.delay = csa_ie.max_switch_time;
        }
 
-       if (res < 0) {
-               ieee80211_queue_work(&local->hw,
-                                    &ifmgd->csa_connection_drop_work);
-               return;
-       }
+       if (res < 0)
+               goto lock_and_drop_connection;
 
        if (beacon && sdata->vif.csa_active && !ifmgd->csa_waiting_bcn) {
                if (res)