From 50298e70853e74f316dc08707e2c5e34eb2b4cec Mon Sep 17 00:00:00 2001 From: Frederic Weisbecker Date: Thu, 24 Jun 2010 21:21:27 +0200 Subject: [PATCH] --- yaml --- r: 205273 b: refs/heads/master c: 0c4519e825c9e2b6a8310deff8582f8c35bfbba9 h: refs/heads/master i: 205271: 9f5b4b524ac3d292346f34dbcde47ea3b56fd2b9 v: v3 --- [refs] | 2 +- trunk/arch/x86/kernel/hw_breakpoint.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 7de4c5e65dfc..75e2ae727333 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5cfaf214856eb934759ae500a0b812dd06a00bd9 +refs/heads/master: 0c4519e825c9e2b6a8310deff8582f8c35bfbba9 diff --git a/trunk/arch/x86/kernel/hw_breakpoint.c b/trunk/arch/x86/kernel/hw_breakpoint.c index a8f1b803d2fd..eaa6ae2a010b 100644 --- a/trunk/arch/x86/kernel/hw_breakpoint.c +++ b/trunk/arch/x86/kernel/hw_breakpoint.c @@ -466,6 +466,13 @@ static int __kprobes hw_breakpoint_handler(struct die_args *args) perf_bp_event(bp, args->regs); + /* + * Set up resume flag to avoid breakpoint recursion when + * returning back to origin. + */ + if (bp->hw.info.type == X86_BREAKPOINT_EXECUTE) + args->regs->flags |= X86_EFLAGS_RF; + rcu_read_unlock(); } /*