[PATCH] swsusp: fix nr_copy_pages
authorPavel Machek <pavel@ucw.cz>
Sat, 25 Jun 2005 21:55:14 +0000 (14:55 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Sat, 25 Jun 2005 23:24:33 +0000 (16:24 -0700)
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 <rjw@sisk.pl>
Signed-off-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
kernel/power/swsusp.c

index 9a3ca659a436e40d05beca747652337a42e1a582..c285fc5a232094c9f7b5e27950525ae942bc99b1 100644 (file)
@@ -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;