@@ -465,6 +465,9 @@ cfg80211_bss_update(struct cfg80211_registered_device *dev,
size_t used = dev->wiphy.bss_priv_size + sizeof(*res);
size_t ielen = res->pub.len_beacon_ies;
+ int information_elements_is_beacon_ies =
+ (found->pub.information_elements == found->pub.beacon_ies);
+
if (found->pub.beacon_ies &&
!found->beacon_ies_allocated &&
ksize(found) >= used + ielen) {
@@ -487,6 +490,11 @@ cfg80211_bss_update(struct cfg80211_registered_device *dev,
found->pub.len_beacon_ies = ielen;
}
}
+
+ if (information_elements_is_beacon_ies) {
+ found->pub.information_elements = found->pub.beacon_ies;
+ found->pub.len_information_elements = found->pub.len_beacon_ies;
+ }
}
kref_put(&res->ref, bss_release);