diff mbox

mac80211: Don't restart sta-timer if not associated.

Message ID 1363299471-10442-1-git-send-email-greearb@candelatech.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Ben Greear March 14, 2013, 10:17 p.m. UTC
From: Ben Greear <greearb@candelatech.com>

I found another crash when deleting lots of virtual stations
in a congested environment.  I think the problem is that
the ieee80211_mlme_notify_scan_completed could call
ieee80211_restart_sta_timer for a non-associated interface
that was about to be deleted.

With the following patch I am unable to reproduce the
crash.

Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 81e0619... a1cc8c4... M	net/mac80211/mlme.c
 net/mac80211/mlme.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

Comments

Ben Greear March 14, 2013, 11 p.m. UTC | #1
On 03/14/2013 03:17 PM, greearb@candelatech.com wrote:
> From: Ben Greear <greearb@candelatech.com>
>
> I found another crash when deleting lots of virtual stations
> in a congested environment.  I think the problem is that
> the ieee80211_mlme_notify_scan_completed could call
> ieee80211_restart_sta_timer for a non-associated interface
> that was about to be deleted.
>
> With the following patch I am unable to reproduce the
> crash.

Nevermind..this seems to break association...will work on
this some more.

Ben

>
> Signed-off-by: Ben Greear <greearb@candelatech.com>
> ---
> :100644 100644 81e0619... a1cc8c4... M	net/mac80211/mlme.c
>   net/mac80211/mlme.c |    3 +++
>   1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
> index 81e0619..a1cc8c4 100644
> --- a/net/mac80211/mlme.c
> +++ b/net/mac80211/mlme.c
> @@ -2931,6 +2931,9 @@ static void ieee80211_restart_sta_timer(struct ieee80211_sub_if_data *sdata)
>   	u32 flags;
>
>   	if (sdata->vif.type == NL80211_IFTYPE_STATION) {
> +		if (unlikely(!sdata->u.mgd.associated))
> +			return;
> +
>   		__ieee80211_stop_poll(sdata);
>
>   		/* let's probe the connection once */
>
diff mbox

Patch

diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 81e0619..a1cc8c4 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -2931,6 +2931,9 @@  static void ieee80211_restart_sta_timer(struct ieee80211_sub_if_data *sdata)
 	u32 flags;
 
 	if (sdata->vif.type == NL80211_IFTYPE_STATION) {
+		if (unlikely(!sdata->u.mgd.associated))
+			return;
+
 		__ieee80211_stop_poll(sdata);
 
 		/* let's probe the connection once */