From dfc3f99b82bbf68f23c577cf28fd6a95d10ebde1 Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Mon, 23 Mar 2009 16:07:24 +0100 Subject: [PATCH] --- yaml --- r: 132517 b: refs/heads/master c: 53da1d9456fe7f87a920a78fdbdcf1225d197cb7 h: refs/heads/master i: 132515: cd66113e9503e129b99a37b9e5fca577b53dc963 v: v3 --- [refs] | 2 +- trunk/kernel/signal.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 2fac0937b080..beade2b35353 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b0dcb4a91ddb79f2e213205cf8d86b467f8559c7 +refs/heads/master: 53da1d9456fe7f87a920a78fdbdcf1225d197cb7 diff --git a/trunk/kernel/signal.c b/trunk/kernel/signal.c index 2a74fe87c0dd..1c8814481a11 100644 --- a/trunk/kernel/signal.c +++ b/trunk/kernel/signal.c @@ -1575,7 +1575,15 @@ static void ptrace_stop(int exit_code, int clear_code, siginfo_t *info) read_lock(&tasklist_lock); if (may_ptrace_stop()) { do_notify_parent_cldstop(current, CLD_TRAPPED); + /* + * Don't want to allow preemption here, because + * sys_ptrace() needs this task to be inactive. + * + * XXX: implement read_unlock_no_resched(). + */ + preempt_disable(); read_unlock(&tasklist_lock); + preempt_enable_no_resched(); schedule(); } else { /*