wifi: mac80211: drop robust action frames before assoc
authorJohannes Berg <johannes.berg@intel.com>
Sun, 1 Oct 2023 10:01:09 +0000 (13:01 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 23 Oct 2023 10:56:33 +0000 (12:56 +0200)
To be able to more easily understand the code, drop robust
action frames before being associated, even if there's no
MFP in the end, as they are Class 3 Frames and shouldn't
be transmitted in the first place.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20231001125722.b2fd37083371.Ie9f4906e2f6c698989bce6681956ed2f9454f27c@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/rx.c

index 051db97..6f679d2 100644 (file)
@@ -2474,6 +2474,15 @@ ieee80211_drop_unencrypted_mgmt(struct ieee80211_rx_data *rx)
                        return RX_DROP_U_UNPROT_UNICAST_PUB_ACTION;
        }
 
+       /*
+        * Drop robust action frames before assoc regardless of MFP state,
+        * after assoc we also have decided on MFP or not.
+        */
+       if (ieee80211_is_action(fc) &&
+           ieee80211_is_robust_mgmt_frame(rx->skb) &&
+           (!rx->sta || !test_sta_flag(rx->sta, WLAN_STA_ASSOC)))
+               return RX_DROP_U_UNPROT_ROBUST_ACTION;
+
        return RX_CONTINUE;
 }