2021-01-26 21:32:04

by Krishna Chaitanya

[permalink] [raw]
Subject: [PATCHv2] cfg80211: Skip key deletion for open associations

From: Chaitanya Tata <[email protected]>

From: Chaitanya Tata <[email protected]>

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 <[email protected]>
---
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