From ebd0d37aee849143562d7132ff932110081806b9 Mon Sep 17 00:00:00 2001 From: Paul Mundt Date: Mon, 8 Sep 2008 18:15:55 +0900 Subject: [PATCH] --- yaml --- r: 116108 b: refs/heads/master c: 734db3770de03fbe9ae4e78519a7d1678189788c h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/sh/kernel/kprobes.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 9ab519908079..826266ff4aff 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 247bc6d2ae3e2de08529977952c7d085f9d562d4 +refs/heads/master: 734db3770de03fbe9ae4e78519a7d1678189788c diff --git a/trunk/arch/sh/kernel/kprobes.c b/trunk/arch/sh/kernel/kprobes.c index f0e1c78d0bff..a478ba78e752 100644 --- a/trunk/arch/sh/kernel/kprobes.c +++ b/trunk/arch/sh/kernel/kprobes.c @@ -252,6 +252,17 @@ 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) { + /* + * The breakpoint instruction was removed right + * after we hit it. Another cpu has removed + * either a probepoint or a debugger breakpoint + * at this address. In either case, no further + * handling of this interrupt is appropriate. + */ + ret = 1; + } + goto no_kprobe; }