diff options
author | 2009-12-01 11:47:14 +0000 | |
---|---|---|
committer | 2009-12-03 11:14:56 -0800 | |
commit | 65f63384b391bf4d384327d8a7c6de9860290b5c (patch) | |
tree | d42741a7582839ed8740b9cfb99416f2fcf46a6a /kernel/workqueue.c | |
parent | xen: don't leak IRQs over suspend/resume. (diff) | |
download | linux-rng-65f63384b391bf4d384327d8a7c6de9860290b5c.tar.xz linux-rng-65f63384b391bf4d384327d8a7c6de9860290b5c.zip |
xen: improve error handling in do_suspend.
The existing error handling has a few issues:
- If freeze_processes() fails it exits with shutting_down = SHUTDOWN_SUSPEND.
- If dpm_suspend_noirq() fails it exits without resuming xenbus.
- If stop_machine() fails it exits without resuming xenbus or calling
dpm_resume_end().
- xs_suspend()/xs_resume() and dpm_suspend_noirq()/dpm_resume_noirq() were not
nested in the obvious way.
Fix by ensuring each failure case goto's the correct label. Treat a failure of
stop_machine() as a cancelled suspend in order to follow the correct resume
path.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: Stable Kernel <stable@kernel.org>
Diffstat (limited to 'kernel/workqueue.c')
0 files changed, 0 insertions, 0 deletions