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); |
