From: Pavel Machek This checks error return from swsusp_alloc, preventing oops when memory can not be allocated. Signed-off-by: Andrew Morton --- 25-akpm/kernel/power/swsusp.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff -puN kernel/power/swsusp.c~swsusp-error-do-not-oops-after-allocation-failure kernel/power/swsusp.c --- 25/kernel/power/swsusp.c~swsusp-error-do-not-oops-after-allocation-failure 2004-08-28 14:43:47.364042040 -0700 +++ 25-akpm/kernel/power/swsusp.c 2004-08-28 14:43:47.368041432 -0700 @@ -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. _