From: Chaitanya Tata <chaitanya.mgit@xxxxxxxxx> From: Chaitanya Tata <chaitanya.mgit@xxxxxxxxx> If the association is open (no authentication and encryption) no need to delete the keys, though this is handled by all drivers, this is unnecessary. Signed-off-by: Chaitanya Tata <chaitanya.tata@xxxxxxxxxxxxxxx> --- v2: Move kfree after check. --- net/wireless/sme.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/net/wireless/sme.c b/net/wireless/sme.c index 38df713f2e2e..016655595b48 100644 --- a/net/wireless/sme.c +++ b/net/wireless/sme.c @@ -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 -- 2.17.1