aboutsummaryrefslogtreecommitdiff
path: root/arch/arm64/kernel/kprobes.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm64/kernel/kprobes.c')
-rw-r--r--arch/arm64/kernel/kprobes.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/arm64/kernel/kprobes.c b/arch/arm64/kernel/kprobes.c
index 2b3ef179cd7..7ad463e6a9b 100644
--- a/arch/arm64/kernel/kprobes.c
+++ b/arch/arm64/kernel/kprobes.c
@@ -60,7 +60,7 @@ static void __kprobes arch_prepare_ss_slot(struct kprobe *p)
static void __kprobes arch_prepare_simulate(struct kprobe *p)
{
if (p->ainsn.prepare)
- p->ainsn.prepare(p, &p->ainsn);
+ p->ainsn.prepare(p->opcode, &p->ainsn);
/* This instructions is not executed xol. No need to adjust the PC */
p->ainsn.restore.addr = 0;
@@ -271,7 +271,9 @@ static int __kprobes reenter_kprobe(struct kprobe *p,
switch (kcb->kprobe_status) {
case KPROBE_HIT_SSDONE:
case KPROBE_HIT_ACTIVE:
- if (!p->ainsn.check_condn || p->ainsn.check_condn(p, regs)) {
+ if (!p->ainsn.check_condn ||
+ p->ainsn.check_condn((u32)p->opcode, &p->ainsn,
+ regs)) {
kprobes_inc_nmissed_count(p);
setup_singlestep(p, regs, kcb, 1);
} else {
@@ -402,7 +404,8 @@ void __kprobes kprobe_handler(struct pt_regs *regs)
if (reenter_kprobe(p, regs, kcb))
return;
} else if (!p->ainsn.check_condn ||
- p->ainsn.check_condn(p, regs)) {
+ p->ainsn.check_condn((u32)p->opcode, &p->ainsn,
+ regs)) {
/* Probe hit and conditional execution check ok. */
set_current_kprobe(p);
kcb->kprobe_status = KPROBE_HIT_ACTIVE;