diff options
Diffstat (limited to 'kernel/power/process.c')
| -rw-r--r-- | kernel/power/process.c | 30 | 
1 files changed, 20 insertions, 10 deletions
diff --git a/kernel/power/process.c b/kernel/power/process.c index 0cf3a27a6c9..addbbe5531b 100644 --- a/kernel/power/process.c +++ b/kernel/power/process.c @@ -135,7 +135,7 @@ static int try_to_freeze_tasks(bool sig_only)  }  /** - *	freeze_processes - tell processes to enter the refrigerator + * freeze_processes - Signal user space processes to enter the refrigerator.   */  int freeze_processes(void)  { @@ -143,20 +143,30 @@ int freeze_processes(void)  	printk("Freezing user space processes ... ");  	error = try_to_freeze_tasks(true); -	if (error) -		goto Exit; -	printk("done.\n"); +	if (!error) { +		printk("done."); +		oom_killer_disable(); +	} +	printk("\n"); +	BUG_ON(in_atomic()); + +	return error; +} + +/** + * freeze_kernel_threads - Make freezable kernel threads go to the refrigerator. + */ +int freeze_kernel_threads(void) +{ +	int error;  	printk("Freezing remaining freezable tasks ... ");  	error = try_to_freeze_tasks(false); -	if (error) -		goto Exit; -	printk("done."); +	if (!error) +		printk("done."); -	oom_killer_disable(); - Exit: -	BUG_ON(in_atomic());  	printk("\n"); +	BUG_ON(in_atomic());  	return error;  }  |