diff options
Diffstat (limited to 'arch/powerpc/kernel/kprobes.c')
-rw-r--r-- | arch/powerpc/kernel/kprobes.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c index 160ae0fa7d0d..fc4343514bed 100644 --- a/arch/powerpc/kernel/kprobes.c +++ b/arch/powerpc/kernel/kprobes.c | |||
@@ -305,16 +305,17 @@ int kprobe_handler(struct pt_regs *regs) | |||
305 | save_previous_kprobe(kcb); | 305 | save_previous_kprobe(kcb); |
306 | set_current_kprobe(p, regs, kcb); | 306 | set_current_kprobe(p, regs, kcb); |
307 | kprobes_inc_nmissed_count(p); | 307 | kprobes_inc_nmissed_count(p); |
308 | prepare_singlestep(p, regs); | ||
309 | kcb->kprobe_status = KPROBE_REENTER; | 308 | kcb->kprobe_status = KPROBE_REENTER; |
310 | if (p->ainsn.boostable >= 0) { | 309 | if (p->ainsn.boostable >= 0) { |
311 | ret = try_to_emulate(p, regs); | 310 | ret = try_to_emulate(p, regs); |
312 | 311 | ||
313 | if (ret > 0) { | 312 | if (ret > 0) { |
314 | restore_previous_kprobe(kcb); | 313 | restore_previous_kprobe(kcb); |
314 | preempt_enable_no_resched(); | ||
315 | return 1; | 315 | return 1; |
316 | } | 316 | } |
317 | } | 317 | } |
318 | prepare_singlestep(p, regs); | ||
318 | return 1; | 319 | return 1; |
319 | } else { | 320 | } else { |
320 | if (*addr != BREAKPOINT_INSTRUCTION) { | 321 | if (*addr != BREAKPOINT_INSTRUCTION) { |