aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/power/snapshot.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/power/snapshot.c')
-rw-r--r--kernel/power/snapshot.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c
index cc349437fb72..0036955357e0 100644
--- a/kernel/power/snapshot.c
+++ b/kernel/power/snapshot.c
@@ -37,6 +37,7 @@
37struct pbe *pagedir_nosave; 37struct pbe *pagedir_nosave;
38static unsigned int nr_copy_pages; 38static unsigned int nr_copy_pages;
39static unsigned int nr_meta_pages; 39static unsigned int nr_meta_pages;
40static unsigned long *buffer;
40 41
41#ifdef CONFIG_HIGHMEM 42#ifdef CONFIG_HIGHMEM
42unsigned int count_highmem_pages(void) 43unsigned int count_highmem_pages(void)
@@ -389,7 +390,7 @@ struct pbe *alloc_pagedir(unsigned int nr_pages, gfp_t gfp_mask, int safe_needed
389 free_pagedir(pblist); 390 free_pagedir(pblist);
390 pblist = NULL; 391 pblist = NULL;
391 } else 392 } else
392 create_pbe_list(pblist, nr_pages); 393 create_pbe_list(pblist, nr_pages);
393 return pblist; 394 return pblist;
394} 395}
395 396
@@ -418,6 +419,7 @@ void swsusp_free(void)
418 nr_copy_pages = 0; 419 nr_copy_pages = 0;
419 nr_meta_pages = 0; 420 nr_meta_pages = 0;
420 pagedir_nosave = NULL; 421 pagedir_nosave = NULL;
422 buffer = NULL;
421} 423}
422 424
423 425
@@ -523,6 +525,8 @@ static void init_header(struct swsusp_info *info)
523 info->cpus = num_online_cpus(); 525 info->cpus = num_online_cpus();
524 info->image_pages = nr_copy_pages; 526 info->image_pages = nr_copy_pages;
525 info->pages = nr_copy_pages + nr_meta_pages + 1; 527 info->pages = nr_copy_pages + nr_meta_pages + 1;
528 info->size = info->pages;
529 info->size <<= PAGE_SHIFT;
526} 530}
527 531
528/** 532/**
@@ -568,8 +572,6 @@ static inline struct pbe *pack_orig_addresses(unsigned long *buf, struct pbe *pb
568 572
569int snapshot_read_next(struct snapshot_handle *handle, size_t count) 573int snapshot_read_next(struct snapshot_handle *handle, size_t count)
570{ 574{
571 static unsigned long *buffer;
572
573 if (handle->page > nr_meta_pages + nr_copy_pages) 575 if (handle->page > nr_meta_pages + nr_copy_pages)
574 return 0; 576 return 0;
575 if (!buffer) { 577 if (!buffer) {
@@ -774,7 +776,6 @@ static int create_image(struct snapshot_handle *handle)
774 776
775int snapshot_write_next(struct snapshot_handle *handle, size_t count) 777int snapshot_write_next(struct snapshot_handle *handle, size_t count)
776{ 778{
777 static unsigned long *buffer;
778 int error = 0; 779 int error = 0;
779 780
780 if (handle->prev && handle->page > nr_meta_pages + nr_copy_pages) 781 if (handle->prev && handle->page > nr_meta_pages + nr_copy_pages)