X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=kernel%2Fptrace.c;h=4e0f0ec003f751a0aa91e2d8388365f042f072d9;hb=99532559dc7a8e686b2cef14c780a7ad5dbd4a31;hp=d95a72c9279dc2e1110d31c0dadacc39b30b198f;hpb=fab8d6ddf6dee2608869005d45fe97f70e4f5bdd;p=linux-2.6 diff --git a/kernel/ptrace.c b/kernel/ptrace.c index d95a72c927..4e0f0ec003 100644 --- a/kernel/ptrace.c +++ b/kernel/ptrace.c @@ -30,14 +30,13 @@ */ void __ptrace_link(task_t *child, task_t *new_parent) { - if (!list_empty(&child->ptrace_list)) - BUG(); + BUG_ON(!list_empty(&child->ptrace_list)); if (child->parent == new_parent) return; list_add(&child->ptrace_list, &child->parent->ptrace_children); - REMOVE_LINKS(child); + remove_parent(child); child->parent = new_parent; - SET_LINKS(child); + add_parent(child); } /* @@ -57,10 +56,6 @@ void ptrace_untrace(task_t *child) signal_wake_up(child, 1); } } - if (child->signal->flags & SIGNAL_GROUP_EXIT) { - sigaddset(&child->pending.signal, SIGKILL); - signal_wake_up(child, 1); - } spin_unlock(&child->sighand->siglock); } @@ -77,12 +72,13 @@ void __ptrace_unlink(task_t *child) child->ptrace = 0; if (!list_empty(&child->ptrace_list)) { list_del_init(&child->ptrace_list); - REMOVE_LINKS(child); + remove_parent(child); child->parent = child->real_parent; - SET_LINKS(child); + add_parent(child); } - ptrace_untrace(child); + if (child->state == TASK_TRACED) + ptrace_untrace(child); } /*