diff options
| author | Jeff Garzik <jeff@garzik.org> | 2006-04-18 04:54:00 -0400 |
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2006-04-18 04:54:00 -0400 |
| commit | 4741c336d27dec3ea68a35659abb8dc82b142388 (patch) | |
| tree | a8576df82129354b77b0144c480c446ec7aba7b2 /fs/exec.c | |
| parent | 26ec634c31a11a003040e10b4d650495158632fd (diff) | |
| parent | a9a5cd5d2a57fb76dbae2115450f777b69beccf7 (diff) | |
Merge branch 'master'
Diffstat (limited to 'fs/exec.c')
| -rw-r--r-- | fs/exec.c | 27 |
1 files changed, 0 insertions, 27 deletions
| @@ -665,9 +665,7 @@ static int de_thread(struct task_struct *tsk) | |||
| 665 | * and to assume its PID: | 665 | * and to assume its PID: |
| 666 | */ | 666 | */ |
| 667 | if (!thread_group_leader(current)) { | 667 | if (!thread_group_leader(current)) { |
| 668 | struct task_struct *parent; | ||
| 669 | struct dentry *proc_dentry1, *proc_dentry2; | 668 | struct dentry *proc_dentry1, *proc_dentry2; |
| 670 | unsigned long ptrace; | ||
| 671 | 669 | ||
| 672 | /* | 670 | /* |
| 673 | * Wait for the thread group leader to be a zombie. | 671 | * Wait for the thread group leader to be a zombie. |
| @@ -704,22 +702,6 @@ static int de_thread(struct task_struct *tsk) | |||
| 704 | * two threads with a switched PID, and release | 702 | * two threads with a switched PID, and release |
| 705 | * the former thread group leader: | 703 | * the former thread group leader: |
| 706 | */ | 704 | */ |
| 707 | ptrace = leader->ptrace; | ||
| 708 | parent = leader->parent; | ||
| 709 | if (unlikely(ptrace) && unlikely(parent == current)) { | ||
| 710 | /* | ||
| 711 | * Joker was ptracing his own group leader, | ||
| 712 | * and now he wants to be his own parent! | ||
| 713 | * We can't have that. | ||
| 714 | */ | ||
| 715 | ptrace = 0; | ||
| 716 | } | ||
| 717 | |||
| 718 | ptrace_unlink(current); | ||
| 719 | ptrace_unlink(leader); | ||
| 720 | remove_parent(current); | ||
| 721 | remove_parent(leader); | ||
| 722 | |||
| 723 | 705 | ||
| 724 | /* Become a process group leader with the old leader's pid. | 706 | /* Become a process group leader with the old leader's pid. |
| 725 | * Note: The old leader also uses thispid until release_task | 707 | * Note: The old leader also uses thispid until release_task |
| @@ -732,8 +714,6 @@ static int de_thread(struct task_struct *tsk) | |||
| 732 | attach_pid(current, PIDTYPE_SID, current->signal->session); | 714 | attach_pid(current, PIDTYPE_SID, current->signal->session); |
| 733 | list_add_tail(¤t->tasks, &init_task.tasks); | 715 | list_add_tail(¤t->tasks, &init_task.tasks); |
| 734 | 716 | ||
| 735 | current->parent = current->real_parent = leader->real_parent; | ||
| 736 | leader->parent = leader->real_parent = child_reaper; | ||
| 737 | current->group_leader = current; | 717 | current->group_leader = current; |
| 738 | leader->group_leader = current; | 718 | leader->group_leader = current; |
| 739 | 719 | ||
| @@ -742,13 +722,6 @@ static int de_thread(struct task_struct *tsk) | |||
| 742 | detach_pid(leader, PIDTYPE_SID); | 722 | detach_pid(leader, PIDTYPE_SID); |
| 743 | list_del_init(&leader->tasks); | 723 | list_del_init(&leader->tasks); |
| 744 | 724 | ||
| 745 | add_parent(current); | ||
| 746 | add_parent(leader); | ||
| 747 | if (ptrace) { | ||
| 748 | current->ptrace = ptrace; | ||
| 749 | __ptrace_link(current, parent); | ||
| 750 | } | ||
| 751 | |||
| 752 | current->exit_signal = SIGCHLD; | 725 | current->exit_signal = SIGCHLD; |
| 753 | 726 | ||
| 754 | BUG_ON(leader->exit_state != EXIT_ZOMBIE); | 727 | BUG_ON(leader->exit_state != EXIT_ZOMBIE); |
