Commit 47b724f3 authored by Pavel Machek's avatar Pavel Machek Committed by Linus Torvalds

[PATCH] swsusp: fix error handling

Fix error handling and whitespace in swsusp.c.  swsusp_free() was called when
there was nothing allocating, leading to oops.
Signed-off-by: default avatarPavel Machek <pavel@suse.cz>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 3efa147a
...@@ -869,13 +869,6 @@ extern asmlinkage int swsusp_arch_resume(void); ...@@ -869,13 +869,6 @@ extern asmlinkage int swsusp_arch_resume(void);
asmlinkage int swsusp_save(void) asmlinkage int swsusp_save(void)
{ {
int error = 0;
if ((error = swsusp_swap_check())) {
printk(KERN_ERR "swsusp: FATAL: cannot find swap device, try "
"swapon -a!\n");
return error;
}
return suspend_prepare_image(); return suspend_prepare_image();
} }
...@@ -892,14 +885,20 @@ int swsusp_suspend(void) ...@@ -892,14 +885,20 @@ int swsusp_suspend(void)
* at resume time, and evil weirdness ensues. * at resume time, and evil weirdness ensues.
*/ */
if ((error = device_power_down(PMSG_FREEZE))) { if ((error = device_power_down(PMSG_FREEZE))) {
printk(KERN_ERR "Some devices failed to power down, aborting suspend\n");
local_irq_enable(); local_irq_enable();
swsusp_free();
return error; return error;
} }
if ((error = swsusp_swap_check())) {
printk(KERN_ERR "swsusp: FATAL: cannot find swap device, try "
"swapon -a!\n");
local_irq_enable();
return error;
}
save_processor_state(); save_processor_state();
if ((error = swsusp_arch_suspend())) if ((error = swsusp_arch_suspend()))
swsusp_free(); printk("Error %d suspending\n", error);
/* Restore control flow magically appears here */ /* Restore control flow magically appears here */
restore_processor_state(); restore_processor_state();
BUG_ON (nr_copy_pages_check != nr_copy_pages); BUG_ON (nr_copy_pages_check != nr_copy_pages);
...@@ -1166,9 +1165,9 @@ static int bio_write_page(pgoff_t page_off, void * page) ...@@ -1166,9 +1165,9 @@ static int bio_write_page(pgoff_t page_off, void * page)
static const char * sanity_check(void) static const char * sanity_check(void)
{ {
dump_info(); dump_info();
if(swsusp_info.version_code != LINUX_VERSION_CODE) if (swsusp_info.version_code != LINUX_VERSION_CODE)
return "kernel version"; return "kernel version";
if(swsusp_info.num_physpages != num_physpages) if (swsusp_info.num_physpages != num_physpages)
return "memory size"; return "memory size";
if (strcmp(swsusp_info.uts.sysname,system_utsname.sysname)) if (strcmp(swsusp_info.uts.sysname,system_utsname.sysname))
return "system type"; return "system type";
......
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