[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87v8kltswb.fsf@all.your.base.are.belong.to.us>
Date: Wed, 01 Feb 2023 14:30:28 +0100
From: Björn Töpel <bjorn@...nel.org>
To: Chen Guokai <chenguokai17@...ls.ucas.ac.cn>,
paul.walmsley@...ive.com, palmer@...belt.com,
aou@...s.berkeley.edu, rostedt@...dmis.org, mingo@...hat.com,
sfr@...b.auug.org.au
Cc: linux-riscv@...ts.infradead.org, linux-kernel@...r.kernel.org,
liaochang1@...wei.com, Chen Guokai <chenguokai17@...ls.ucas.ac.cn>
Subject: Re: [PATCH v6 07/13] riscv/kprobe: Prepare detour buffer for
optimized kprobe
Chen Guokai <chenguokai17@...ls.ucas.ac.cn> writes:
> diff --git a/arch/riscv/kernel/probes/opt.c b/arch/riscv/kernel/probes/opt.c
> index d84aa1420fa2..a47f7d2bf3a6 100644
> --- a/arch/riscv/kernel/probes/opt.c
> +++ b/arch/riscv/kernel/probes/opt.c
> @@ -11,9 +11,32 @@
> #include <linux/kprobes.h>
> #include <asm/kprobes.h>
> #include <asm/patch.h>
> +#include <asm/asm-offsets.h>
>
> #include "simulate-insn.h"
> #include "decode-insn.h"
> +#include "../../net/bpf_jit.h"
> +
> +static void optimized_callback(struct optimized_kprobe *op,
> + struct pt_regs *regs)
> +{
> + if (kprobe_disabled(&op->kp))
> + return;
> +
> + preempt_disable();
> + if (kprobe_running()) {
> + kprobes_inc_nmissed_count(&op->kp);
> + } else {
> + __this_cpu_write(current_kprobe, &op->kp);
> + /* Save skipped registers */
> + instruction_pointer_set(regs, (unsigned long)op->kp.addr);
> + get_kprobe_ctlblk()->kprobe_status = KPROBE_HIT_ACTIVE;
> + opt_pre_handler(&op->kp, regs);
> + __this_cpu_write(current_kprobe, NULL);
> + }
> + preempt_enable();
> +}
> +NOKPROBE_SYMBOL(optimized_callback)
>
> static int in_auipc_jalr_range(long val)
> {
> @@ -30,6 +53,11 @@ static int in_auipc_jalr_range(long val)
> #endif
> }
>
> +#define DETOUR_ADDR(code, offs) \
> + ((void *)((unsigned long)(code) + (offs)))
> +#define DETOUR_INSN(code, offs) \
> + (*(kprobe_opcode_t *)((unsigned long)(code) + (offs)))
Can this cause a misaligned u32 load exception?
Björn
Powered by blists - more mailing lists