Re: [PATCH 07/13] powerpc/kprobes: Unpoison instruction in kprobe struct
From: Naveen N Rao <naveen@kernel.org>
Date: 2023-12-15 07:59:21
Also in:
linux-mm, lkml
From: Naveen N Rao <naveen@kernel.org>
Date: 2023-12-15 07:59:21
Also in:
linux-mm, lkml
On Thu, Dec 14, 2023 at 05:55:33AM +0000, Nicholas Miehlbradt wrote:
KMSAN does not unpoison the ainsn field of a kprobe struct correctly. Manually unpoison it to prevent false positives. Signed-off-by: Nicholas Miehlbradt <redacted> --- arch/powerpc/kernel/kprobes.c | 2 ++ 1 file changed, 2 insertions(+)diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c index b20ee72e873a..1cbec54f2b6a 100644 --- a/arch/powerpc/kernel/kprobes.c +++ b/arch/powerpc/kernel/kprobes.c@@ -27,6 +27,7 @@ #include <asm/sections.h> #include <asm/inst.h> #include <linux/uaccess.h> +#include <linux/kmsan-checks.h> DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);@@ -179,6 +180,7 @@ int arch_prepare_kprobe(struct kprobe *p) if (!ret) { patch_instruction(p->ainsn.insn, insn); + kmsan_unpoison_memory(p->ainsn.insn, sizeof(kprobe_opcode_t));
kprobe_opcode_t is u32, but we could be probing a prefixed instruction. You can pass the instruction length through ppc_inst_len(insn). - Naveen