diff options
author | Oleg Nesterov <[email protected]> | 2012-03-23 15:02:40 -0700 |
---|---|---|
committer | Linus Torvalds <[email protected]> | 2012-03-23 16:58:40 -0700 |
commit | b1845ff53f1a9eadba005ae53dfe60ab00dfe83b (patch) | |
tree | 1c38877029c0ffe0844cbbe7b0e022e8f79b6235 | |
parent | 15cab952139404d0e593cb1aaab0a3547ac0f95b (diff) |
ptrace: don't send SIGTRAP on exec if SEIZED
ptrace_event(PTRACE_EVENT_EXEC) sends SIGTRAP if PT_TRACE_EXEC is not
set. This is because this SIGTRAP predates PTRACE_O_TRACEEXEC option,
we do not need/want this with PT_SEIZED which can set the options during
attach.
Suggested-by: Pedro Alves <[email protected]>
Signed-off-by: Oleg Nesterov <[email protected]>
Cc: Chris Evans <[email protected]>
Cc: Indan Zupancic <[email protected]>
Cc: Denys Vlasenko <[email protected]>
Cc: Tejun Heo <[email protected]>
Cc: Pedro Alves <[email protected]>
Cc: Jan Kratochvil <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
-rw-r--r-- | include/linux/ptrace.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h index c2f1f6a5fcb8..6fdb196caa3e 100644 --- a/include/linux/ptrace.h +++ b/include/linux/ptrace.h @@ -199,9 +199,10 @@ static inline void ptrace_event(int event, unsigned long message) if (unlikely(ptrace_event_enabled(current, event))) { current->ptrace_message = message; ptrace_notify((event << 8) | SIGTRAP); - } else if (event == PTRACE_EVENT_EXEC && unlikely(current->ptrace)) { + } else if (event == PTRACE_EVENT_EXEC) { /* legacy EXEC report via SIGTRAP */ - send_sig(SIGTRAP, current, 0); + if ((current->ptrace & (PT_PTRACED|PT_SEIZED)) == PT_PTRACED) + send_sig(SIGTRAP, current, 0); } } |