diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/fork.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index f8620b82f8f5..2f5f00301182 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -863,6 +863,14 @@ static struct task_struct *copy_process(unsigned long clone_flags, /* Need tasklist lock for parent etc handling! */ write_lock_irq(&tasklist_lock); + /* + * Check for pending SIGKILL! The new thread should not be allowed + * to slip out of an OOM kill. (or normal SIGKILL.) + */ + if (sigismember(¤t->pending.signal, SIGKILL)) { + write_unlock_irq(&tasklist_lock); + goto bad_fork_cleanup_namespace; + } /* CLONE_PARENT re-uses the old parent */ if (clone_flags & CLONE_PARENT) |
