The hw-breakpoint handler will return NOTIFY_DONE for user-space breakpoints to generate SIGTRAP signal (and not for kernel-space addresses). Signed-off-by: K.Prasad --- arch/x86/kernel/hw_breakpoint.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) Index: linux-2.6-tip/arch/x86/kernel/hw_breakpoint.c =================================================================== --- linux-2.6-tip.orig/arch/x86/kernel/hw_breakpoint.c +++ linux-2.6-tip/arch/x86/kernel/hw_breakpoint.c @@ -502,8 +502,6 @@ static int __kprobes hw_breakpoint_handl rcu_read_lock(); bp = per_cpu(bp_per_reg[i], cpu); - if (bp) - rc = NOTIFY_DONE; /* * Reset the 'i'th TRAP bit in dr6 to denote completion of * exception handling @@ -517,6 +515,13 @@ static int __kprobes hw_breakpoint_handl rcu_read_unlock(); break; } + /* + * Further processing in do_debug() is needed for a) user-space + * breakpoints (to generate signals) and b) when the system has + * taken exception due to multiple causes + */ + if (bp->attr.bp_addr < TASK_SIZE) + rc = NOTIFY_DONE; perf_bp_event(bp, args->regs); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/