diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-03-12 13:16:18 +0100 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-03-12 13:16:18 +0100 |
| commit | f8cb22cbb8383c9f41e6ccbcd4fb94edb1048bda (patch) | |
| tree | 9b3a333224ec895c053a694dcaff526502b84e6c /kernel/fork.c | |
| parent | genirq: assert that irq handlers are indeed running in hardirq context (diff) | |
| parent | Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/air... (diff) | |
| download | linux-f8cb22cbb8383c9f41e6ccbcd4fb94edb1048bda.tar.gz linux-f8cb22cbb8383c9f41e6ccbcd4fb94edb1048bda.zip | |
Merge branch 'linus' into irq/genirq
Diffstat (limited to 'kernel/fork.c')
| -rw-r--r-- | kernel/fork.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index a66fbde20715..4854c2c4a82e 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -1179,10 +1179,6 @@ static struct task_struct *copy_process(unsigned long clone_flags, #endif clear_all_latency_tracing(p); - /* Our parent execution domain becomes current domain - These must match for thread signalling to apply */ - p->parent_exec_id = p->self_exec_id; - /* ok, now we should be set up.. */ p->exit_signal = (clone_flags & CLONE_THREAD) ? -1 : (clone_flags & CSIGNAL); p->pdeath_signal = 0; @@ -1220,10 +1216,13 @@ static struct task_struct *copy_process(unsigned long clone_flags, set_task_cpu(p, smp_processor_id()); /* CLONE_PARENT re-uses the old parent */ - if (clone_flags & (CLONE_PARENT|CLONE_THREAD)) + if (clone_flags & (CLONE_PARENT|CLONE_THREAD)) { p->real_parent = current->real_parent; - else + p->parent_exec_id = current->parent_exec_id; + } else { p->real_parent = current; + p->parent_exec_id = current->self_exec_id; + } spin_lock(¤t->sighand->siglock); |
