----- On Feb 5, 2019, at 10:04 AM, Kees Cook keescook@xxxxxxxxxxxx wrote: > On Mon, Feb 4, 2019 at 9:52 PM Mathieu Desnoyers > <mathieu.desnoyers@xxxxxxxxxxxx> wrote: >> >> commit e46daee53bb5 "ARM: 8806/1: kprobes: Fix false positive with >> FORTIFY_SOURCE" >> introduced a regression in optimized kprobes. It triggers "invalid >> instruction" oopses when using kprobes instrumentation through lttng and >> perf. This commit was introduced in kernel v4.20, and has been backported >> to stable kernels 4.19 and 4.14. >> >> This crash was also reported by Hongzhi Song on the redhat bugzilla >> where the patch was originally introduced. > > Ew, yes. Thanks for catching this. > > Fixes: e46daee53bb5 ("ARM: 8806/1: kprobes: Fix false positive with > FORTIFY_SOURCE") > Acked-by: Kees Cook <keescook@xxxxxxxxxxxx> > > Can you send this to the ARM patch tracker, please? Sure, will do right away, Thanks! Mathieu > > -Kees > >> >> Link: https://bugzilla.redhat.com/show_bug.cgi?id=1639397 >> Link: https://bugs.lttng.org/issues/1174 >> Link: >> https://lore.kernel.org/lkml/342740659.2887.1549307721609.JavaMail.zimbra@xxxxxxxxxxxx >> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx> >> Reported-by: Robert Berger <Robert.Berger@xxxxxxxxxxxxxxxxxxxxxxxxxxx> >> Tested-by: Robert Berger <Robert.Berger@xxxxxxxxxxxxxxxxxxxxxxxxxxx> >> CC: Robert Berger <Robert.Berger@xxxxxxxxxxxxxxxxxxxxxxxxxxx> >> CC: Masami Hiramatsu <mhiramat@xxxxxxxxxx> >> CC: William Cohen <wcohen@xxxxxxxxxx> >> CC: Laura Abbott <labbott@xxxxxxxxxx> >> CC: Kees Cook <keescook@xxxxxxxxxxxx> >> CC: Russell King <rmk+kernel@xxxxxxxxxxxxxxx> >> CC: <stable@xxxxxxxxxxxxxxx> # v4.14+ >> --- >> arch/arm/probes/kprobes/opt-arm.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/arch/arm/probes/kprobes/opt-arm.c >> b/arch/arm/probes/kprobes/opt-arm.c >> index 2c118a6ab358..0dc23fc227ed 100644 >> --- a/arch/arm/probes/kprobes/opt-arm.c >> +++ b/arch/arm/probes/kprobes/opt-arm.c >> @@ -247,7 +247,7 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe >> *op, struct kprobe *or >> } >> >> /* Copy arch-dep-instance from template. */ >> - memcpy(code, (unsigned char *)optprobe_template_entry, >> + memcpy(code, (unsigned long *)&optprobe_template_entry, >> TMPL_END_IDX * sizeof(kprobe_opcode_t)); >> >> /* Adjust buffer according to instruction. */ >> -- >> 2.11.0 >> > > > -- > Kees Cook -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com