mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-23 07:01:23 +00:00
Kill some obsolete sub-thread-ptrace stuff
There is a couple of subtle checks which were needed to handle ptracing from the same thread group. This was deprecated a long ago, imho this code just complicates the understanding. And, the "->parent->signal->flags & SIGNAL_GROUP_EXIT" check in exit_notify() is not right. SIGNAL_GROUP_EXIT can mean exec(), not exit_group(). This means ptracer can lose a ptraced zombie on exec(). Minor problem, but still the bug. Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru> Acked-by: Roland McGrath <roland@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
b6b1d87785
commit
247284481c
2 changed files with 2 additions and 10 deletions
|
@ -813,7 +813,7 @@ static void exit_notify(struct task_struct *tsk)
|
|||
__kill_pgrp_info(SIGCONT, SEND_SIG_PRIV, pgrp);
|
||||
}
|
||||
|
||||
/* Let father know we died
|
||||
/* Let father know we died
|
||||
*
|
||||
* Thread signals are configurable, but you aren't going to use
|
||||
* that to send signals to arbitary processes.
|
||||
|
@ -826,9 +826,7 @@ static void exit_notify(struct task_struct *tsk)
|
|||
* If our self_exec id doesn't match our parent_exec_id then
|
||||
* we have changed execution domain as these two values started
|
||||
* the same after a fork.
|
||||
*
|
||||
*/
|
||||
|
||||
if (tsk->exit_signal != SIGCHLD && tsk->exit_signal != -1 &&
|
||||
( tsk->parent_exec_id != t->self_exec_id ||
|
||||
tsk->self_exec_id != tsk->parent_exec_id)
|
||||
|
@ -848,9 +846,7 @@ static void exit_notify(struct task_struct *tsk)
|
|||
}
|
||||
|
||||
state = EXIT_ZOMBIE;
|
||||
if (tsk->exit_signal == -1 &&
|
||||
(likely(tsk->ptrace == 0) ||
|
||||
unlikely(tsk->parent->signal->flags & SIGNAL_GROUP_EXIT)))
|
||||
if (tsk->exit_signal == -1 && likely(!tsk->ptrace))
|
||||
state = EXIT_DEAD;
|
||||
tsk->exit_state = state;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue