diff options
| author | Patrick Mochel <mochel@osdl.org> | 2003-08-12 20:03:47 -0700 |
|---|---|---|
| committer | Patrick Mochel <mochel@osdl.org> | 2003-08-12 20:03:47 -0700 |
| commit | 86aa5b107fca2ecd606cc9a4f5b81b4f05790c1b (patch) | |
| tree | 7f5791f2159f2bc2258c9494cab86937ffcf07c4 /kernel | |
| parent | cad2b8ef9633861df70a6791a34e55d24022b998 (diff) | |
[power] Check device_suspend() return value in swsusp.
From Pavel Machek.
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/power/swsusp.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/kernel/power/swsusp.c b/kernel/power/swsusp.c index b9cd4bd18358..4ef3892bc04b 100644 --- a/kernel/power/swsusp.c +++ b/kernel/power/swsusp.c @@ -479,19 +479,23 @@ static void drivers_unsuspend(void) /* Called from process context */ static int drivers_suspend(void) { - device_suspend(4, SUSPEND_NOTIFY); - device_suspend(4, SUSPEND_SAVE_STATE); - device_suspend(4, SUSPEND_DISABLE); - if(!pm_suspend_state) { + if (device_suspend(4, SUSPEND_NOTIFY)) + return -EIO; + if (device_suspend(4, SUSPEND_SAVE_STATE)) { + device_resume(RESUME_RESTORE_STATE); + return -EIO; + } + if (!pm_suspend_state) { if(pm_send_all(PM_SUSPEND,(void *)3)) { printk(KERN_WARNING "Problem while sending suspend event\n"); - return(1); + return -EIO; } pm_suspend_state=1; } else 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 */ @@ -504,7 +508,7 @@ static void drivers_resume(int flags) device_resume(RESUME_ENABLE); } if (flags & RESUME_PHASE2) { - if(pm_suspend_state) { + if (pm_suspend_state) { if(pm_send_all(PM_RESUME,(void *)0)) printk(KERN_WARNING "Problem while sending resume event\n"); pm_suspend_state=0; @@ -715,7 +719,7 @@ static void do_software_suspend(void) blk_run_queues(); /* 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 * suspend_save_image. * |
