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; }