diff options
Diffstat (limited to 'kernel/power/process.c')
| -rw-r--r-- | kernel/power/process.c | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/kernel/power/process.c b/kernel/power/process.c index df058bed53ce..0c2ee9761d57 100644 --- a/kernel/power/process.c +++ b/kernel/power/process.c @@ -146,6 +146,18 @@ int freeze_processes(void)  	if (!error && !oom_killer_disable())  		error = -EBUSY; +	/* +	 * There is a hard to fix race between oom_reaper kernel thread +	 * and oom_killer_disable. oom_reaper calls exit_oom_victim +	 * before the victim reaches exit_mm so try to freeze all the tasks +	 * again and catch such a left over task. +	 */ +	if (!error) { +		pr_info("Double checking all user space processes after OOM killer disable... "); +		error = try_to_freeze_tasks(true); +		pr_cont("\n"); +	} +  	if (error)  		thaw_processes();  	return error;  | 
