Set wlvif->ps_compl to NULL in before return
authorPontus Fuchs <pontus.fuchs@gmail.com>
Wed, 14 Dec 2011 13:32:23 +0000 (14:32 +0100)
committerLuciano Coelho <coelho@ti.com>
Thu, 15 Dec 2011 08:19:46 +0000 (10:19 +0200)
wl1271_configure_suspend_sta leaves a stale stack declared
completion in wlvif->ps_compl. Set it to NULL before returning.

Signed-off-by: Pontus Fuchs <pontus.fuchs@gmail.com>
[small fix to use wlvif->ps_compl instead of wl->ps_compl]
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/wl12xx/main.c

index ec446710ebb33ce116b15ebcf1be529edacacc9f..c3058419e227bb9bf35f5c91f94aeb9edbc3c24e 100644 (file)
@@ -1580,24 +1580,24 @@ static int wl1271_configure_suspend_sta(struct wl1271 *wl,
 
                ret = wait_for_completion_timeout(
                        &compl, msecs_to_jiffies(WL1271_PS_COMPLETE_TIMEOUT));
+
+               mutex_lock(&wl->mutex);
                if (ret <= 0) {
                        wl1271_warning("couldn't enter ps mode!");
                        ret = -EBUSY;
-                       goto out;
+                       goto out_cleanup;
                }
 
-               /* take mutex again, and wakeup */
-               mutex_lock(&wl->mutex);
-
                ret = wl1271_ps_elp_wakeup(wl);
                if (ret < 0)
-                       goto out_unlock;
+                       goto out_cleanup;
        }
 out_sleep:
        wl1271_ps_elp_sleep(wl);
+out_cleanup:
+       wlvif->ps_compl = NULL;
 out_unlock:
        mutex_unlock(&wl->mutex);
-out:
        return ret;
 
 }