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 { /*