wifi: mac80211: don't re-parse elems in ieee80211_assoc_success()
authorJohannes Berg <johannes.berg@intel.com>
Wed, 29 Jun 2022 09:52:49 +0000 (11:52 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 15 Jul 2022 09:43:17 +0000 (11:43 +0200)
We're already passing the elems pointer, and have parsed
them from the same frame with exactly the same parameters,
so don't need to do that again.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/mlme.c

index 29c1fe8b9f4a8e38e5fe161434568946500a8dc6..6f25ac2055d5f3b4d8b2db4de355411601384b5f 100644 (file)
@@ -3470,27 +3470,17 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
        bool is_s1g = cbss->channel->band == NL80211_BAND_S1GHZ;
        struct ieee80211_link_data *link = &sdata->deflink;
        u32 changed = 0;
-       u8 *pos;
        int err;
        bool ret;
 
-       /* AssocResp and ReassocResp have identical structure */
-
-       pos = mgmt->u.assoc_resp.variable;
-       aid = le16_to_cpu(mgmt->u.assoc_resp.aid);
-       if (is_s1g) {
-               pos = (u8 *) mgmt->u.s1g_assoc_resp.variable;
-               aid = 0; /* TODO */
-       }
        capab_info = le16_to_cpu(mgmt->u.assoc_resp.capab_info);
-       elems = ieee802_11_parse_elems(pos, len - (pos - (u8 *)mgmt), false,
-                                      mgmt->bssid, assoc_data->bss->bssid);
-
-       if (!elems)
-               return false;
 
        if (elems->aid_resp)
                aid = le16_to_cpu(elems->aid_resp->aid);
+       else if (is_s1g)
+               aid = 0; /* TODO */
+       else
+               aid = le16_to_cpu(mgmt->u.assoc_resp.aid);
 
        /*
         * The 5 MSB of the AID field are reserved
@@ -3865,7 +3855,6 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
 
        ret = true;
  out:
-       kfree(elems);
        kfree(bss_ies);
        return ret;
 }