mac80211: fix mlme timeouts
authorJohannes Berg <johannes@sipsolutions.net>
Thu, 23 Jul 2009 14:50:16 +0000 (16:50 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 27 Jul 2009 19:24:18 +0000 (15:24 -0400)
When a new MLME work is created, its timeout is initialised
to 0. This is wrong, it could then be thought of as having
an actual timeout in the future (time_is_after_jiffies() can
return true). Instead, it should be initialised to jiffies
so that it will run right away as soon as the mlme work is
executed.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Reported-by: Luciano Roth Coelho <luciano.coelho@nokia.com>
Reported-by: Alban Browaeys <prahal@yahoo.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/mlme.c

index 52b6f83..807ab89 100644 (file)
@@ -2377,6 +2377,7 @@ int ieee80211_mgd_auth(struct ieee80211_sub_if_data *sdata,
 
        wk->state = IEEE80211_MGD_STATE_PROBE;
        wk->auth_alg = auth_alg;
+       wk->timeout = jiffies; /* run right away */
 
        /*
         * XXX: if still associated need to tell AP that we're going
@@ -2448,6 +2449,7 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
 
        wk->state = IEEE80211_MGD_STATE_ASSOC;
        wk->tries = 0;
+       wk->timeout = jiffies; /* run right away */
 
        if (req->use_mfp) {
                ifmgd->mfp = IEEE80211_MFP_REQUIRED;