@@ -1098,8 +1098,6 @@ void __cfg80211_disconnected(struct net_device *dev, const u8 *ie,
wdev->current_bss = NULL;
wdev->ssid_len = 0;
wdev->conn_owner_nlportid = 0;
- kfree_sensitive(wdev->connect_keys);
- wdev->connect_keys = NULL;
nl80211_send_disconnected(rdev, dev, reason, ie, ie_len, from_ap);
@@ -1113,7 +1111,7 @@ void __cfg80211_disconnected(struct net_device *dev, const u8 *ie,
* Delete all the keys ... pairwise keys can't really
* exist any more anyway, but default keys might.
*/
- if (rdev->ops->del_key) {
+ if (wdev->connect_keys && rdev->ops->del_key) {
int max_key_idx = 5;
if (wiphy_ext_feature_isset(
@@ -1127,6 +1125,9 @@ void __cfg80211_disconnected(struct net_device *dev, const u8 *ie,
rdev_del_key(rdev, dev, i, false, NULL);
}
+ kfree_sensitive(wdev->connect_keys);
+ wdev->connect_keys = NULL;
+
rdev_set_qos_map(rdev, dev, NULL);
#ifdef CONFIG_CFG80211_WEXT