mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] sh/kprobes: respect gdb breakpoints
@ 2015-08-07 16:04 Jim Keniston
  0 siblings, 0 replies; only message in thread
From: Jim Keniston @ 2015-08-07 16:04 UTC (permalink / raw)
  To: linux-kernel; +Cc: Ananth Narayan, Masami Hiramatsu, abab, vkumar14

On the sh architecture, kprobes and gdb/gdbserver use different
breakpoint opcodes.  Without this fix, kprobes doesn't recognize
the gdb traps, and the resulting NOTIFY_STOP prevents ptrace and gdb
from being notified.  The result is that if kprobes is configured,
a gdb-traced process hangs when its gdb breakpoint is hit.

Signed-off-by: Jim Keniston <jkenisto@linux.vnet.ibm.com>
Signed-off-by: Reza Arbab <arbab@linux.vnet.ibm.com>
Reported-by: Vijay Kumar <vkumar14@lenovo.com>
Tested-by: Vijay Kumar <vkumar14@lenovo.com>
---
 arch/sh/include/asm/kprobes.h |    2 ++
 arch/sh/kernel/kprobes.c      |    5 ++++-
 2 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/arch/sh/include/asm/kprobes.h b/arch/sh/include/asm/kprobes.h
index 134f398..f22a3cb 100644
--- a/arch/sh/include/asm/kprobes.h
+++ b/arch/sh/include/asm/kprobes.h
@@ -8,6 +8,8 @@
 
 typedef insn_size_t kprobe_opcode_t;
 #define BREAKPOINT_INSTRUCTION	0xc33a
+#define GDB_BREAKPOINT_INSTRUCTION	0xc3c3
+#define GDBSERVER_BREAKPOINT_INSTRUCTION	0xc320
 
 #define MAX_INSN_SIZE 16
 #define MAX_STACK_SIZE 64
diff --git a/arch/sh/kernel/kprobes.c b/arch/sh/kernel/kprobes.c
index 83acbf3..bcaa072 100644
--- a/arch/sh/kernel/kprobes.c
+++ b/arch/sh/kernel/kprobes.c
@@ -260,7 +260,10 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
 	p = get_kprobe(addr);
 	if (!p) {
 		/* Not one of ours: let kernel handle it */
-		if (*(kprobe_opcode_t *)addr != BREAKPOINT_INSTRUCTION) {
+		kprobe_opcode_t opcode = *(kprobe_opcode_t *)addr;
+		if (opcode != BREAKPOINT_INSTRUCTION &&
+				opcode != GDB_BREAKPOINT_INSTRUCTION &&
+				opcode != GDBSERVER_BREAKPOINT_INSTRUCTION) {
 			/*
 			 * The breakpoint instruction was removed right
 			 * after we hit it. Another cpu has removed


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2015-08-07 16:04 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-07 16:04 [PATCH] sh/kprobes: respect gdb breakpoints Jim Keniston

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®