Commit 86aa5b10 authored by Patrick Mochel's avatar Patrick Mochel

[power] Check device_suspend() return value in swsusp.

From Pavel Machek.
parent cad2b8ef
...@@ -479,19 +479,23 @@ static void drivers_unsuspend(void) ...@@ -479,19 +479,23 @@ static void drivers_unsuspend(void)
/* Called from process context */ /* Called from process context */
static int drivers_suspend(void) static int drivers_suspend(void)
{ {
device_suspend(4, SUSPEND_NOTIFY); if (device_suspend(4, SUSPEND_NOTIFY))
device_suspend(4, SUSPEND_SAVE_STATE); return -EIO;
device_suspend(4, SUSPEND_DISABLE); if (device_suspend(4, SUSPEND_SAVE_STATE)) {
if(!pm_suspend_state) { device_resume(RESUME_RESTORE_STATE);
return -EIO;
}
if (!pm_suspend_state) {
if(pm_send_all(PM_SUSPEND,(void *)3)) { if(pm_send_all(PM_SUSPEND,(void *)3)) {
printk(KERN_WARNING "Problem while sending suspend event\n"); printk(KERN_WARNING "Problem while sending suspend event\n");
return(1); return -EIO;
} }
pm_suspend_state=1; pm_suspend_state=1;
} else } else
printk(KERN_WARNING "PM suspend state already raised\n"); printk(KERN_WARNING "PM suspend state already raised\n");
device_suspend(4, SUSPEND_DISABLE);
return(0); return 0;
} }
#define RESUME_PHASE1 1 /* Called from interrupts disabled */ #define RESUME_PHASE1 1 /* Called from interrupts disabled */
...@@ -504,7 +508,7 @@ static void drivers_resume(int flags) ...@@ -504,7 +508,7 @@ static void drivers_resume(int flags)
device_resume(RESUME_ENABLE); device_resume(RESUME_ENABLE);
} }
if (flags & RESUME_PHASE2) { if (flags & RESUME_PHASE2) {
if(pm_suspend_state) { if (pm_suspend_state) {
if(pm_send_all(PM_RESUME,(void *)0)) if(pm_send_all(PM_RESUME,(void *)0))
printk(KERN_WARNING "Problem while sending resume event\n"); printk(KERN_WARNING "Problem while sending resume event\n");
pm_suspend_state=0; pm_suspend_state=0;
...@@ -715,7 +719,7 @@ static void do_software_suspend(void) ...@@ -715,7 +719,7 @@ static void do_software_suspend(void)
blk_run_queues(); blk_run_queues();
/* Save state of all device drivers, and stop them. */ /* Save state of all device drivers, and stop them. */
if(drivers_suspend()==0) if (drivers_suspend()==0)
/* If stopping device drivers worked, we proceed basically into /* If stopping device drivers worked, we proceed basically into
* suspend_save_image. * suspend_save_image.
* *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment