diff options
Diffstat (limited to 'kernel/exit.c')
-rw-r--r-- | kernel/exit.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index ceffc67b564a..03120229db28 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
@@ -771,9 +771,12 @@ static void forget_original_parent(struct task_struct *father) | |||
771 | struct task_struct *p, *n, *reaper; | 771 | struct task_struct *p, *n, *reaper; |
772 | LIST_HEAD(dead_children); | 772 | LIST_HEAD(dead_children); |
773 | 773 | ||
774 | exit_ptrace(father); | ||
775 | |||
776 | write_lock_irq(&tasklist_lock); | 774 | write_lock_irq(&tasklist_lock); |
775 | /* | ||
776 | * Note that exit_ptrace() and find_new_reaper() might | ||
777 | * drop tasklist_lock and reacquire it. | ||
778 | */ | ||
779 | exit_ptrace(father); | ||
777 | reaper = find_new_reaper(father); | 780 | reaper = find_new_reaper(father); |
778 | 781 | ||
779 | list_for_each_entry_safe(p, n, &father->children, sibling) { | 782 | list_for_each_entry_safe(p, n, &father->children, sibling) { |
@@ -1383,8 +1386,7 @@ static int wait_task_stopped(struct wait_opts *wo, | |||
1383 | if (!unlikely(wo->wo_flags & WNOWAIT)) | 1386 | if (!unlikely(wo->wo_flags & WNOWAIT)) |
1384 | *p_code = 0; | 1387 | *p_code = 0; |
1385 | 1388 | ||
1386 | /* don't need the RCU readlock here as we're holding a spinlock */ | 1389 | uid = task_uid(p); |
1387 | uid = __task_cred(p)->uid; | ||
1388 | unlock_sig: | 1390 | unlock_sig: |
1389 | spin_unlock_irq(&p->sighand->siglock); | 1391 | spin_unlock_irq(&p->sighand->siglock); |
1390 | if (!exit_code) | 1392 | if (!exit_code) |
@@ -1457,7 +1459,7 @@ static int wait_task_continued(struct wait_opts *wo, struct task_struct *p) | |||
1457 | } | 1459 | } |
1458 | if (!unlikely(wo->wo_flags & WNOWAIT)) | 1460 | if (!unlikely(wo->wo_flags & WNOWAIT)) |
1459 | p->signal->flags &= ~SIGNAL_STOP_CONTINUED; | 1461 | p->signal->flags &= ~SIGNAL_STOP_CONTINUED; |
1460 | uid = __task_cred(p)->uid; | 1462 | uid = task_uid(p); |
1461 | spin_unlock_irq(&p->sighand->siglock); | 1463 | spin_unlock_irq(&p->sighand->siglock); |
1462 | 1464 | ||
1463 | pid = task_pid_vnr(p); | 1465 | pid = task_pid_vnr(p); |