diff options
author | Pavel Machek <pavel@ucw.cz> | 2005-06-25 17:55:14 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-25 19:24:33 -0400 |
commit | c61978b30322c83a94d7e4857fa5b9996b7d7931 (patch) | |
tree | 34fe94d8b55738a957472de21a098a588f171d6a /kernel/power/swsusp.c | |
parent | 2e4d5822dc71f01bf515b8f6f4e41ae12ee785b8 (diff) |
[PATCH] swsusp: fix nr_copy_pages
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>
Diffstat (limited to 'kernel/power/swsusp.c')
-rw-r--r-- | kernel/power/swsusp.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/power/swsusp.c b/kernel/power/swsusp.c index 9a3ca659a436..c285fc5a2320 100644 --- a/kernel/power/swsusp.c +++ b/kernel/power/swsusp.c | |||
@@ -781,18 +781,18 @@ static int swsusp_alloc(void) | |||
781 | { | 781 | { |
782 | int error; | 782 | int error; |
783 | 783 | ||
784 | pagedir_nosave = NULL; | ||
785 | nr_copy_pages = calc_nr(nr_copy_pages); | ||
786 | |||
784 | pr_debug("suspend: (pages needed: %d + %d free: %d)\n", | 787 | pr_debug("suspend: (pages needed: %d + %d free: %d)\n", |
785 | nr_copy_pages, PAGES_FOR_IO, nr_free_pages()); | 788 | nr_copy_pages, PAGES_FOR_IO, nr_free_pages()); |
786 | 789 | ||
787 | pagedir_nosave = NULL; | ||
788 | if (!enough_free_mem()) | 790 | if (!enough_free_mem()) |
789 | return -ENOMEM; | 791 | return -ENOMEM; |
790 | 792 | ||
791 | if (!enough_swap()) | 793 | if (!enough_swap()) |
792 | return -ENOSPC; | 794 | return -ENOSPC; |
793 | 795 | ||
794 | nr_copy_pages = calc_nr(nr_copy_pages); | ||
795 | |||
796 | if (!(pagedir_save = alloc_pagedir(nr_copy_pages))) { | 796 | if (!(pagedir_save = alloc_pagedir(nr_copy_pages))) { |
797 | printk(KERN_ERR "suspend: Allocating pagedir failed.\n"); | 797 | printk(KERN_ERR "suspend: Allocating pagedir failed.\n"); |
798 | return -ENOMEM; | 798 | return -ENOMEM; |