[PATCH 14/X] uprobes: uprobe_deny_signal: check__fatal_signal_pending()

From: Oleg Nesterov
Date: Wed Oct 19 2011 - 17:59:04 EST


Change uprobe_deny_signal() to check __fatal_signal_pending() along with
xol_was_trapped().

Normally this is not really needed but this is safer. And this makes more
clear the fact that even SIGKILL is handled via UTASK_SSTEP_TRAPPED. Once
again, SIGKILL can be pending because of the core-dumping, we should not
exit with regs->ip pointing to ->xol_vaddr.
---
kernel/uprobes.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kernel/uprobes.c b/kernel/uprobes.c
index aa5492a..9e9d4e4 100644
--- a/kernel/uprobes.c
+++ b/kernel/uprobes.c
@@ -1335,7 +1335,7 @@ bool uprobe_deny_signal(void)
clear_tsk_thread_flag(tsk, TIF_SIGPENDING);
spin_unlock_irq(&tsk->sighand->siglock);

- if (xol_was_trapped(tsk)) {
+ if (__fatal_signal_pending(tsk) || xol_was_trapped(tsk)) {
utask->state = UTASK_SSTEP_TRAPPED;
set_tsk_thread_flag(tsk, TIF_UPROBE);
set_tsk_thread_flag(tsk, TIF_NOTIFY_RESUME);
--
1.5.5.1


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/