|
@@ -1204,7 +1204,7 @@ static int wait_task_zombie(struct task_struct *p, int options,
|
|
|
* p->signal fields, because they are only touched by
|
|
|
* __exit_signal, which runs with tasklist_lock
|
|
|
* write-locked anyway, and so is excluded here. We do
|
|
|
- * need to protect the access to p->parent->signal fields,
|
|
|
+ * need to protect the access to parent->signal fields,
|
|
|
* as other threads in the parent group can be right
|
|
|
* here reaping other children at the same time.
|
|
|
*
|
|
@@ -1213,8 +1213,8 @@ static int wait_task_zombie(struct task_struct *p, int options,
|
|
|
* group including the group leader.
|
|
|
*/
|
|
|
thread_group_cputime(p, &cputime);
|
|
|
- spin_lock_irq(&p->parent->sighand->siglock);
|
|
|
- psig = p->parent->signal;
|
|
|
+ spin_lock_irq(&p->real_parent->sighand->siglock);
|
|
|
+ psig = p->real_parent->signal;
|
|
|
sig = p->signal;
|
|
|
psig->cutime =
|
|
|
cputime_add(psig->cutime,
|
|
@@ -1245,7 +1245,7 @@ static int wait_task_zombie(struct task_struct *p, int options,
|
|
|
sig->oublock + sig->coublock;
|
|
|
task_io_accounting_add(&psig->ioac, &p->ioac);
|
|
|
task_io_accounting_add(&psig->ioac, &sig->ioac);
|
|
|
- spin_unlock_irq(&p->parent->sighand->siglock);
|
|
|
+ spin_unlock_irq(&p->real_parent->sighand->siglock);
|
|
|
}
|
|
|
|
|
|
/*
|