diff --git a/net/wireless/sme.c b/net/wireless/sme.c index 458f72d8351a..85076f3b3355 100644 --- a/net/wireless/sme.c +++ b/net/wireless/sme.c @@ -1453,6 +1453,13 @@ int cfg80211_connect(struct cfg80211_registered_device *rdev, lockdep_assert_wiphy(wdev->wiphy); + /* + * Pending events may still change the state we're about to reason + * about (e.g. a deferred disconnect clearing ssid_len), so process + * them before looking at it. + */ + cfg80211_process_rdev_events(rdev); + /* * If we have an ssid_len, we're trying to connect or are * already connected, so reject a new SSID unless it's the @@ -1559,6 +1566,13 @@ int cfg80211_disconnect(struct cfg80211_registered_device *rdev, lockdep_assert_wiphy(wdev->wiphy); + /* + * Pending events may still change the state we're about to reason + * about (e.g. a deferred disconnect clearing ssid_len), so process + * them before looking at it. + */ + cfg80211_process_rdev_events(rdev); + kfree_sensitive(wdev->connect_keys); wdev->connect_keys = NULL;