When trying to disassociate while not associated,
the kernel would crash rather than refusing the
operation, fix this;
Reported-by: Maxim Levitsky <[email protected]>
Signed-off-by: Johannes Berg <[email protected]>
---
net/wireless/mlme.c | 6 ++++++
1 file changed, 6 insertions(+)
--- wireless-testing.orig/net/wireless/mlme.c 2009-07-27 10:20:17.000000000 +0200
+++ wireless-testing/net/wireless/mlme.c 2009-07-27 10:20:56.000000000 +0200
@@ -545,6 +545,12 @@ static int __cfg80211_mlme_disassoc(stru
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;
On Mon, 2009-07-27 at 10:22 +0200, Johannes Berg wrote:
> When trying to disassociate while not associated,
> the kernel would crash rather than refusing the
> operation, fix this;
>
> Reported-by: Maxim Levitsky <[email protected]>
> Signed-off-by: Johannes Berg <[email protected]>
> ---
> net/wireless/mlme.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> --- wireless-testing.orig/net/wireless/mlme.c 2009-07-27 10:20:17.000000000 +0200
> +++ wireless-testing/net/wireless/mlme.c 2009-07-27 10:20:56.000000000 +0200
> @@ -545,6 +545,12 @@ static int __cfg80211_mlme_disassoc(stru
>
> 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;
>
>
Thanks, this fixes this bug for me.
Still many problems though.
Best regards,
Maxim Levitsky