From: Pavel Machek The following patch moves the recalculation of nr_copy_pages so that the right number is used in the calculation of the size of memory and swap needed. It prevents swsusp from attempting to suspend if there is not enough memory and/or swap (which is unlikely anyway). Signed-off-by: Rafael J. Wysocki Signed-off-by: Pavel Machek Signed-off-by: Andrew Morton --- kernel/power/swsusp.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff -puN kernel/power/swsusp.c~swsusp-fix-nr_copy_pages kernel/power/swsusp.c --- 25/kernel/power/swsusp.c~swsusp-fix-nr_copy_pages 2005-05-02 18:59:27.000000000 -0700 +++ 25-akpm/kernel/power/swsusp.c 2005-05-02 18:59:27.000000000 -0700 @@ -781,18 +781,18 @@ static int swsusp_alloc(void) { int error; + pagedir_nosave = NULL; + nr_copy_pages = calc_nr(nr_copy_pages); + pr_debug("suspend: (pages needed: %d + %d free: %d)\n", nr_copy_pages, PAGES_FOR_IO, nr_free_pages()); - pagedir_nosave = NULL; if (!enough_free_mem()) return -ENOMEM; if (!enough_swap()) return -ENOSPC; - nr_copy_pages = calc_nr(nr_copy_pages); - if (!(pagedir_save = alloc_pagedir(nr_copy_pages))) { printk(KERN_ERR "suspend: Allocating pagedir failed.\n"); return -ENOMEM; _