diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/Makefile | 3 | ||||
| -rw-r--r-- | kernel/power/swap.c | 13 | 
2 files changed, 8 insertions, 8 deletions
| diff --git a/kernel/Makefile b/kernel/Makefile index f70396e5a24..2d9de86b7e7 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -23,6 +23,7 @@ CFLAGS_REMOVE_irq_work.o = -pg  endif  obj-y += sched/ +obj-y += power/  obj-$(CONFIG_FREEZER) += freezer.o  obj-$(CONFIG_PROFILING) += profile.o @@ -52,8 +53,6 @@ obj-$(CONFIG_PROVE_LOCKING) += spinlock.o  obj-$(CONFIG_UID16) += uid16.o  obj-$(CONFIG_MODULES) += module.o  obj-$(CONFIG_KALLSYMS) += kallsyms.o -obj-$(CONFIG_PM) += power/ -obj-$(CONFIG_FREEZER) += power/  obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o  obj-$(CONFIG_KEXEC) += kexec.o  obj-$(CONFIG_BACKTRACE_SELF_TEST) += backtracetest.o diff --git a/kernel/power/swap.c b/kernel/power/swap.c index 3739ecced08..8742fd013a9 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)  	pr_debug("PM: Free swap pages: %u\n", free_swap); -	required = PAGES_FOR_IO + ((flags & SF_NOCOMPRESS_MODE) ? -		nr_pages : (nr_pages * LZO_CMP_PAGES) / LZO_UNC_PAGES + 1); +	required = PAGES_FOR_IO + nr_pages;  	return free_swap > required;  } @@ -802,10 +801,12 @@ int swsusp_write(unsigned int flags)  		printk(KERN_ERR "PM: Cannot get swap writer\n");  		return error;  	} -	if (!enough_swap(pages, flags)) { -		printk(KERN_ERR "PM: Not enough free swap\n"); -		error = -ENOSPC; -		goto out_finish; +	if (flags & SF_NOCOMPRESS_MODE) { +		if (!enough_swap(pages, flags)) { +			printk(KERN_ERR "PM: Not enough free swap\n"); +			error = -ENOSPC; +			goto out_finish; +		}  	}  	memset(&snapshot, 0, sizeof(struct snapshot_handle));  	error = snapshot_read_next(&snapshot); | 
