diff options
author | 2020-07-08 11:38:59 +0200 | |
---|---|---|
committer | 2020-07-08 11:38:59 +0200 | |
commit | faa2fd7cbad4609d06d7904c0a80cf2f8cd23678 (patch) | |
tree | 3a5bfcc8879b719aec97cb73ed6e020cde502546 /kernel/signal.c | |
parent | sched/core: Remove mmdrop() definition (diff) | |
parent | sched: Fix unreliable rseq cpu_id for new tasks (diff) | |
download | wireguard-linux-faa2fd7cbad4609d06d7904c0a80cf2f8cd23678.tar.xz wireguard-linux-faa2fd7cbad4609d06d7904c0a80cf2f8cd23678.zip |
Merge branch 'sched/urgent'
Diffstat (limited to 'kernel/signal.c')
-rw-r--r-- | kernel/signal.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index 5ca48cc5da76..ee22ec78fd6d 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -2529,9 +2529,6 @@ bool get_signal(struct ksignal *ksig) struct signal_struct *signal = current->signal; int signr; - if (unlikely(current->task_works)) - task_work_run(); - if (unlikely(uprobe_deny_signal())) return false; @@ -2544,6 +2541,13 @@ bool get_signal(struct ksignal *ksig) relock: spin_lock_irq(&sighand->siglock); + current->jobctl &= ~JOBCTL_TASK_WORK; + if (unlikely(current->task_works)) { + spin_unlock_irq(&sighand->siglock); + task_work_run(); + goto relock; + } + /* * Every stopped thread goes here after wakeup. Check to see if * we should notify the parent, prepare_signal(SIGCONT) encodes |