aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/kernel/kprobes.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/ia64/kernel/kprobes.c')
-rw-r--r--arch/ia64/kernel/kprobes.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/arch/ia64/kernel/kprobes.c b/arch/ia64/kernel/kprobes.c
index 027d656664d2..41e80b42d3f3 100644
--- a/arch/ia64/kernel/kprobes.c
+++ b/arch/ia64/kernel/kprobes.c
@@ -419,10 +419,11 @@ static void prepare_ss(struct kprobe *p, struct pt_regs *regs)
419 ia64_psr(regs)->ss = 1; 419 ia64_psr(regs)->ss = 1;
420} 420}
421 421
422static int pre_kprobes_handler(struct pt_regs *regs) 422static int pre_kprobes_handler(struct die_args *args)
423{ 423{
424 struct kprobe *p; 424 struct kprobe *p;
425 int ret = 0; 425 int ret = 0;
426 struct pt_regs *regs = args->regs;
426 kprobe_opcode_t *addr = (kprobe_opcode_t *)instruction_pointer(regs); 427 kprobe_opcode_t *addr = (kprobe_opcode_t *)instruction_pointer(regs);
427 428
428 preempt_disable(); 429 preempt_disable();
@@ -437,7 +438,7 @@ static int pre_kprobes_handler(struct pt_regs *regs)
437 } 438 }
438 arch_disarm_kprobe(p); 439 arch_disarm_kprobe(p);
439 ret = 1; 440 ret = 1;
440 } else { 441 } else if (args->err == __IA64_BREAK_JPROBE) {
441 /* 442 /*
442 * jprobe instrumented function just completed 443 * jprobe instrumented function just completed
443 */ 444 */
@@ -445,6 +446,9 @@ static int pre_kprobes_handler(struct pt_regs *regs)
445 if (p->break_handler && p->break_handler(p, regs)) { 446 if (p->break_handler && p->break_handler(p, regs)) {
446 goto ss_probe; 447 goto ss_probe;
447 } 448 }
449 } else {
450 /* Not our break */
451 goto no_kprobe;
448 } 452 }
449 } 453 }
450 454
@@ -515,7 +519,7 @@ int kprobe_exceptions_notify(struct notifier_block *self, unsigned long val,
515 struct die_args *args = (struct die_args *)data; 519 struct die_args *args = (struct die_args *)data;
516 switch(val) { 520 switch(val) {
517 case DIE_BREAK: 521 case DIE_BREAK:
518 if (pre_kprobes_handler(args->regs)) 522 if (pre_kprobes_handler(args))
519 return NOTIFY_STOP; 523 return NOTIFY_STOP;
520 break; 524 break;
521 case DIE_SS: 525 case DIE_SS: