diff options
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/mlme.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index ac9429e8d72b..7a7921476582 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -1995,12 +1995,18 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata, | |||
1995 | 1995 | ||
1996 | mutex_lock(&local->work_mtx); | 1996 | mutex_lock(&local->work_mtx); |
1997 | list_for_each_entry(wk, &local->work_list, list) { | 1997 | list_for_each_entry(wk, &local->work_list, list) { |
1998 | if (wk->type != IEEE80211_WORK_DIRECT_PROBE) | 1998 | if (wk->sdata != sdata) |
1999 | continue; | 1999 | continue; |
2000 | |||
2001 | if (wk->type != IEEE80211_WORK_DIRECT_PROBE && | ||
2002 | wk->type != IEEE80211_WORK_AUTH) | ||
2003 | continue; | ||
2004 | |||
2000 | if (memcmp(req->bss->bssid, wk->filter_ta, ETH_ALEN)) | 2005 | if (memcmp(req->bss->bssid, wk->filter_ta, ETH_ALEN)) |
2001 | continue; | 2006 | continue; |
2002 | not_auth_yet = true; | 2007 | |
2003 | list_del(&wk->list); | 2008 | not_auth_yet = wk->type == IEEE80211_WORK_DIRECT_PROBE; |
2009 | list_del_rcu(&wk->list); | ||
2004 | free_work(wk); | 2010 | free_work(wk); |
2005 | break; | 2011 | break; |
2006 | } | 2012 | } |