diff options
author | Rafael J. Wysocki <rjw@sisk.pl> | 2005-09-28 00:45:43 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-28 10:46:41 -0400 |
commit | 0f7347c20c410c300be0db4c132945fd02e54110 (patch) | |
tree | 8f8a059eaed60c6d4f98a62f7dde447d4a76b9e3 /kernel/power/swsusp.c | |
parent | f65a4d10c8a4eb9f919cf416e5dcd720b7d20f50 (diff) |
[PATCH] swsusp: avoid problems if there are too many pages to save
The following patch makes swsusp avoid problems during resume if there are
too many pages to save on suspend. It adds a constant that allows us to
verify if we are going to save too many pages and implements the check
(this is done as early as we can tell that the check will trigger, which is
in swsusp_alloc()).
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-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 | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/power/swsusp.c b/kernel/power/swsusp.c index 0dfb24948907..acf79ac1cb6d 100644 --- a/kernel/power/swsusp.c +++ b/kernel/power/swsusp.c | |||
@@ -931,6 +931,10 @@ static int swsusp_alloc(void) | |||
931 | if (!enough_swap()) | 931 | if (!enough_swap()) |
932 | return -ENOSPC; | 932 | return -ENOSPC; |
933 | 933 | ||
934 | if (MAX_PBES < nr_copy_pages / PBES_PER_PAGE + | ||
935 | !!(nr_copy_pages % PBES_PER_PAGE)) | ||
936 | return -ENOSPC; | ||
937 | |||
934 | if (!(pagedir_save = alloc_pagedir(nr_copy_pages))) { | 938 | if (!(pagedir_save = alloc_pagedir(nr_copy_pages))) { |
935 | printk(KERN_ERR "suspend: Allocating pagedir failed.\n"); | 939 | printk(KERN_ERR "suspend: Allocating pagedir failed.\n"); |
936 | return -ENOMEM; | 940 | return -ENOMEM; |