diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-03-25 10:26:51 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-03-25 10:26:51 +0100 |
commit | b6d9842258d1ba27fb978cded74eb4b6aa15edc8 (patch) | |
tree | 0fc02ca81720b6e4d19d372e346faad47f4f612c /kernel | |
parent | 67aa0f767af488a7f1e41cccb4f7a4893f24a1ab (diff) | |
parent | 8e0ee43bc2c3e19db56a4adaa9a9b04ce885cd84 (diff) |
Merge branch 'sched/cleanups'; commit 'v2.6.29' into sched/core
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/signal.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index 2a74fe87c0d..1c8814481a1 100644 --- a/kernel/signal.c +++ b/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 { /* |