summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2009-07-27 10:22:28 +0200
committerJohn W. Linville <linville@tuxdriver.com>2009-07-29 21:46:11 +0200
commitf9d6b402603a63b5e5b56bd7a79fa72a818be55b (patch)
treef1568e0d82005fb40186d5436627841be053ac87
parentath9k: Add debug counters for TX (diff)
downloadlinux-f9d6b402603a63b5e5b56bd7a79fa72a818be55b.tar.xz
linux-f9d6b402603a63b5e5b56bd7a79fa72a818be55b.zip
cfg80211: fix disassoc while not associated
When trying to disassociate while not associated, the kernel would crash rather than refusing the operation, fix this; Reported-by: Maxim Levitsky <maximlevitsky@gmail.com> Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--net/wireless/mlme.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c
index 5b9b22120824..30058a80d7af 100644
--- a/net/wireless/mlme.c
+++ b/net/wireless/mlme.c
@@ -545,6 +545,12 @@ static int __cfg80211_mlme_disassoc(struct cfg80211_registered_device *rdev,
ASSERT_WDEV_LOCK(wdev);
+ if (wdev->sme_state != CFG80211_SME_CONNECTED)
+ return -ENOTCONN;
+
+ if (WARN_ON(!wdev->current_bss))
+ return -ENOTCONN;
+
memset(&req, 0, sizeof(req));
req.reason_code = reason;
req.ie = ie;