diff options
Diffstat (limited to 'kernel/signal.c')
| -rw-r--r-- | kernel/signal.c | 8 | 
1 files changed, 8 insertions, 0 deletions
| diff --git a/kernel/signal.c b/kernel/signal.c index 1f9dd41c04be..60c737e423a1 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -2600,6 +2600,14 @@ static void do_freezer_trap(void)  	spin_unlock_irq(¤t->sighand->siglock);  	cgroup_enter_frozen();  	schedule(); + +	/* +	 * We could've been woken by task_work, run it to clear +	 * TIF_NOTIFY_SIGNAL. The caller will retry if necessary. +	 */ +	clear_notify_signal(); +	if (unlikely(task_work_pending(current))) +		task_work_run();  }  static int ptrace_signal(int signr, kernel_siginfo_t *info, enum pid_type type) |