diff options
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, | |||
| 1179 | #endif | 1179 | #endif |
| 1180 | clear_all_latency_tracing(p); | 1180 | clear_all_latency_tracing(p); |
| 1181 | 1181 | ||
| 1182 | /* Our parent execution domain becomes current domain | ||
| 1183 | These must match for thread signalling to apply */ | ||
| 1184 | p->parent_exec_id = p->self_exec_id; | ||
| 1185 | |||
| 1186 | /* ok, now we should be set up.. */ | 1182 | /* ok, now we should be set up.. */ |
| 1187 | p->exit_signal = (clone_flags & CLONE_THREAD) ? -1 : (clone_flags & CSIGNAL); | 1183 | p->exit_signal = (clone_flags & CLONE_THREAD) ? -1 : (clone_flags & CSIGNAL); |
| 1188 | p->pdeath_signal = 0; | 1184 | p->pdeath_signal = 0; |
| @@ -1220,10 +1216,13 @@ static struct task_struct *copy_process(unsigned long clone_flags, | |||
| 1220 | set_task_cpu(p, smp_processor_id()); | 1216 | set_task_cpu(p, smp_processor_id()); |
| 1221 | 1217 | ||
| 1222 | /* CLONE_PARENT re-uses the old parent */ | 1218 | /* CLONE_PARENT re-uses the old parent */ |
| 1223 | if (clone_flags & (CLONE_PARENT|CLONE_THREAD)) | 1219 | if (clone_flags & (CLONE_PARENT|CLONE_THREAD)) { |
| 1224 | p->real_parent = current->real_parent; | 1220 | p->real_parent = current->real_parent; |
| 1225 | else | 1221 | p->parent_exec_id = current->parent_exec_id; |
| 1222 | } else { | ||
| 1226 | p->real_parent = current; | 1223 | p->real_parent = current; |
| 1224 | p->parent_exec_id = current->self_exec_id; | ||
| 1225 | } | ||
| 1227 | 1226 | ||
| 1228 | spin_lock(¤t->sighand->siglock); | 1227 | spin_lock(¤t->sighand->siglock); |
| 1229 | 1228 | ||
