Merge tag 'linux-watchdog-5.20-rc1' of git://www.linux-watchdog.org/linux-watchdog
[linux-2.6-microblaze.git] / net / mac80211 / scan.c
index f80284e..fa8ddf5 100644 (file)
@@ -209,8 +209,7 @@ ieee80211_bss_info_update(struct ieee80211_local *local,
        if (baselen > len)
                return NULL;
 
-       elems = ieee802_11_parse_elems(elements, len - baselen, false,
-                                      mgmt->bssid, cbss->bssid);
+       elems = ieee802_11_parse_elems(elements, len - baselen, false, cbss);
        if (!elems)
                return NULL;
 
@@ -221,16 +220,21 @@ ieee80211_bss_info_update(struct ieee80211_local *local,
 
        bss = (void *)cbss->priv;
        ieee80211_update_bss_from_elems(local, bss, elems, rx_status, beacon);
+       kfree(elems);
 
        list_for_each_entry(non_tx_cbss, &cbss->nontrans_list, nontrans_list) {
                non_tx_bss = (void *)non_tx_cbss->priv;
 
+               elems = ieee802_11_parse_elems(elements, len - baselen, false,
+                                              non_tx_cbss);
+               if (!elems)
+                       continue;
+
                ieee80211_update_bss_from_elems(local, non_tx_bss, elems,
                                                rx_status, beacon);
+               kfree(elems);
        }
 
-       kfree(elems);
-
        return bss;
 }