diff options
-rw-r--r-- | kernel/power/swap.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/kernel/power/swap.c b/kernel/power/swap.c index 3739ecced085..8742fd013a94 100644 --- a/kernel/power/swap.c +++ b/kernel/power/swap.c | |||
@@ -773,8 +773,7 @@ static int enough_swap(unsigned int nr_pages, unsigned int flags) | |||
773 | 773 | ||
774 | pr_debug("PM: Free swap pages: %u\n", free_swap); | 774 | pr_debug("PM: Free swap pages: %u\n", free_swap); |
775 | 775 | ||
776 | required = PAGES_FOR_IO + ((flags & SF_NOCOMPRESS_MODE) ? | 776 | required = PAGES_FOR_IO + nr_pages; |
777 | nr_pages : (nr_pages * LZO_CMP_PAGES) / LZO_UNC_PAGES + 1); | ||
778 | return free_swap > required; | 777 | return free_swap > required; |
779 | } | 778 | } |
780 | 779 | ||
@@ -802,10 +801,12 @@ int swsusp_write(unsigned int flags) | |||
802 | printk(KERN_ERR "PM: Cannot get swap writer\n"); | 801 | printk(KERN_ERR "PM: Cannot get swap writer\n"); |
803 | return error; | 802 | return error; |
804 | } | 803 | } |
805 | if (!enough_swap(pages, flags)) { | 804 | if (flags & SF_NOCOMPRESS_MODE) { |
806 | printk(KERN_ERR "PM: Not enough free swap\n"); | 805 | if (!enough_swap(pages, flags)) { |
807 | error = -ENOSPC; | 806 | printk(KERN_ERR "PM: Not enough free swap\n"); |
808 | goto out_finish; | 807 | error = -ENOSPC; |
808 | goto out_finish; | ||
809 | } | ||
809 | } | 810 | } |
810 | memset(&snapshot, 0, sizeof(struct snapshot_handle)); | 811 | memset(&snapshot, 0, sizeof(struct snapshot_handle)); |
811 | error = snapshot_read_next(&snapshot); | 812 | error = snapshot_read_next(&snapshot); |