summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2004-09-24 03:28:50 -0700
committerPatrick Mochel <mochel@digitalimplant.org>2004-09-24 03:28:50 -0700
commit1f585447137c1e19381b970fdfe5613044e6f5a6 (patch)
treee20fb676cc3500a426ab1fc361ce61f82dd115c9
parent19318566fe545b1edbe68862a472f87bc42f15ad (diff)
[PATCH] swsusp: do not oops after allocation failure
From: Pavel Machek <pavel@ucw.cz> This checks error return from swsusp_alloc, preventing oops when memory can not be allocated. Signed-off-by: Andrew Morton <akpm@osdl.org>
-rw-r--r--kernel/power/swsusp.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/kernel/power/swsusp.c b/kernel/power/swsusp.c
index c04e2a04dbbf..11ea2b15f995 100644
--- a/kernel/power/swsusp.c
+++ b/kernel/power/swsusp.c
@@ -677,9 +677,9 @@ static int alloc_pagedir(void)
calc_order();
pagedir_save = (suspend_pagedir_t *)__get_free_pages(GFP_ATOMIC | __GFP_COLD,
pagedir_order);
- if(!pagedir_save)
+ if (!pagedir_save)
return -ENOMEM;
- memset(pagedir_save,0,(1 << pagedir_order) * PAGE_SIZE);
+ memset(pagedir_save, 0, (1 << pagedir_order) * PAGE_SIZE);
pagedir_nosave = pagedir_save;
return 0;
}
@@ -784,6 +784,7 @@ static int swsusp_alloc(void)
int suspend_prepare_image(void)
{
unsigned int nr_needed_pages = 0;
+ int error;
pr_debug("swsusp: critical section: \n");
if (save_highmem()) {
@@ -796,7 +797,9 @@ int suspend_prepare_image(void)
printk("swsusp: Need to copy %u pages\n",nr_copy_pages);
nr_needed_pages = nr_copy_pages + PAGES_FOR_IO;
- swsusp_alloc();
+ error = swsusp_alloc();
+ if (error)
+ return error;
/* During allocating of suspend pagedir, new cold pages may appear.
* Kill them.