From aad48f7adbfd7df51799945e1b1ec8a5c7993a3a Mon Sep 17 00:00:00 2001 From: Oleg Nesterov Date: Thu, 2 Apr 2009 16:58:23 -0700 Subject: [PATCH] --- yaml --- r: 139698 b: refs/heads/master c: 1ee1184485df9c9a3503d3a684b911fb7c73d259 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/ptrace.c | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index fc2bea6279eb..e233d3f6f903 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 95a3540da9c81a5987be810e1d9a83640a366bd5 +refs/heads/master: 1ee1184485df9c9a3503d3a684b911fb7c73d259 diff --git a/trunk/kernel/ptrace.c b/trunk/kernel/ptrace.c index 296e8105863a..5105f5a6a2ce 100644 --- a/trunk/kernel/ptrace.c +++ b/trunk/kernel/ptrace.c @@ -60,11 +60,15 @@ static void ptrace_untrace(struct task_struct *child) { spin_lock(&child->sighand->siglock); if (task_is_traced(child)) { - if (child->signal->flags & SIGNAL_STOP_STOPPED) { + /* + * If the group stop is completed or in progress, + * this thread was already counted as stopped. + */ + if (child->signal->flags & SIGNAL_STOP_STOPPED || + child->signal->group_stop_count) __set_task_state(child, TASK_STOPPED); - } else { + else signal_wake_up(child, 1); - } } spin_unlock(&child->sighand->siglock); }