Fix an apparant hang with the "apm -s" command. We omitted to wake up
this process once resume had completed.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
wait_event(apm_suspend_waitqueue,
as->suspend_state == SUSPEND_DONE);
} else {
+ as->suspend_state = SUSPEND_WAIT;
up(&state_lock);
/*
* acknowledged.
*/
err = queue_suspend_event(APM_USER_SUSPEND, as);
- if (err < 0)
+ if (err < 0) {
+ /*
+ * Avoid taking the lock here - this
+ * should be fine.
+ */
+ as->suspend_state = SUSPEND_NONE;
break;
+ }
if (err > 0)
apm_suspend();