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 <nicholas@xxxxxxxxxxxxx> > --- > 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