diff options
| author | Andrew Morton <akpm@osdl.org> | 2004-09-24 03:28:50 -0700 |
|---|---|---|
| committer | Patrick Mochel <mochel@digitalimplant.org> | 2004-09-24 03:28:50 -0700 |
| commit | 1f585447137c1e19381b970fdfe5613044e6f5a6 (patch) | |
| tree | e20fb676cc3500a426ab1fc361ce61f82dd115c9 | |
| parent | 19318566fe545b1edbe68862a472f87bc42f15ad (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.c | 9 |
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. |
