From 7f1c9797c8ef6f8b4a98df635c8ded39cb0bf55a Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Fri, 25 Jul 2008 19:45:55 -0700 Subject: [PATCH] --- yaml --- r: 106221 b: refs/heads/master c: b787f7ba677840da16a2228c16571ce8a1fcb799 h: refs/heads/master i: 106219: 4678044506570c544dd9d1f02b8f24a8dd3bc984 v: v3 --- [refs] | 2 +- trunk/include/linux/tracehook.h | 14 ++++++++++++++ trunk/kernel/signal.c | 4 +++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index e8913e000ad6..68b01c133ff4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2b2a1ff64afbadac842bbc58c5166962cf4f7664 +refs/heads/master: b787f7ba677840da16a2228c16571ce8a1fcb799 diff --git a/trunk/include/linux/tracehook.h b/trunk/include/linux/tracehook.h index 4c50e1b57349..43bc51b6bd33 100644 --- a/trunk/include/linux/tracehook.h +++ b/trunk/include/linux/tracehook.h @@ -422,6 +422,20 @@ static inline int tracehook_consider_fatal_signal(struct task_struct *task, return (task_ptrace(task) & PT_PTRACED) != 0; } +/** + * tracehook_force_sigpending - let tracing force signal_pending(current) on + * + * Called when recomputing our signal_pending() flag. Return nonzero + * to force the signal_pending() flag on, so that tracehook_get_signal() + * will be called before the next return to user mode. + * + * Called with @current->sighand->siglock held. + */ +static inline int tracehook_force_sigpending(void) +{ + return 0; +} + /** * tracehook_get_signal - deliver synthetic signal to traced task * @task: @current diff --git a/trunk/kernel/signal.c b/trunk/kernel/signal.c index 0e862d3130ff..954f77d7e3bc 100644 --- a/trunk/kernel/signal.c +++ b/trunk/kernel/signal.c @@ -134,7 +134,9 @@ void recalc_sigpending_and_wake(struct task_struct *t) void recalc_sigpending(void) { - if (!recalc_sigpending_tsk(current) && !freezing(current)) + if (unlikely(tracehook_force_sigpending())) + set_thread_flag(TIF_SIGPENDING); + else if (!recalc_sigpending_tsk(current) && !freezing(current)) clear_thread_flag(TIF_SIGPENDING); }