[lttng-dev] [PATCH lttng-modules v2 1/2] Blacklist: kprobe for arm
Mathieu Desnoyers
mathieu.desnoyers at efficios.com
Thu Mar 7 15:17:13 EST 2019
Merged into master, 2.11, 2.10, 2.9, thanks!
Mathieu
----- On Mar 7, 2019, at 2:57 PM, Jonathan Rajotte jonathan.rajotte-julien at efficios.com wrote:
> This upstream kernel commit broke optimized kprobe.
>
> commit e46daee53bb50bde38805f1823a182979724c229
> Author: Kees Cook <keescook at chromium.org>
> Date: Tue Oct 30 22:12:56 2018 +0100
>
> ARM: 8806/1: kprobes: Fix false positive with FORTIFY_SOURCE
>
> The arm compiler internally interprets an inline assembly label
> as an unsigned long value, not a pointer. As a result, under
> CONFIG_FORTIFY_SOURCE, the address of a label has a size of 4 bytes,
> which was tripping the runtime checks. Instead, we can just cast the label
> (as done with the size calculations earlier).
>
> Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1639397
>
> Reported-by: William Cohen <wcohen at redhat.com>
> Fixes: 6974f0c4555e ("include/linux/string.h: add the option of fortified
> string.h functions")
> Cc: stable at vger.kernel.org
> Acked-by: Laura Abbott <labbott at redhat.com>
> Acked-by: Masami Hiramatsu <mhiramat at kernel.org>
> Tested-by: William Cohen <wcohen at redhat.com>
> Signed-off-by: Kees Cook <keescook at chromium.org>
> Signed-off-by: Russell King <rmk+kernel at armlinux.org.uk>
>
> It was introduced in the 4.20 cycle.
> It was also backported to the 4.19 and 4.14 branch.
>
> This issue is fixed upstream by [1] and is present in the 5.0 kernel
> release.
>
> [1] 0ac569bf6a7983c0c5747d6df8db9dc05bc92b6c
>
> The fix was backported to 4.20, 4.19 and 4.14 branch.
> It is included starting at:
> v5.0.0
> v4.20.13
> v4.19.26
> v4.14.104
>
> Fixes #1174
>
> Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
> ---
>
> v2: Fixed missing subject for commit introducing the issue kernel side.
>
> ---
> blacklist/kprobes.h | 23 +++++++++++++++++++++++
> probes/lttng-kprobes.c | 1 +
> probes/lttng-kretprobes.c | 1 +
> 3 files changed, 25 insertions(+)
> create mode 100644 blacklist/kprobes.h
>
> diff --git a/blacklist/kprobes.h b/blacklist/kprobes.h
> new file mode 100644
> index 0000000..6c1d7a5
> --- /dev/null
> +++ b/blacklist/kprobes.h
> @@ -0,0 +1,23 @@
> +/* SPDX-License-Identifier: (GPL-2.0 OR LGPL-2.1)
> + *
> + * blacklist/kprobes.h
> + *
> + * Blacklist of kernel for buggy kprobes implementation.
> + *
> + * Copyright (C) 2019 Jonathan Rajotte-Julien
> <jonathan.rajotte-julien at efficios.com>
> + */
> +
> +#ifndef _LTTNG_BLACKLIST_KPROBES_H
> +#define _LTTNG_BLACKLIST_KPROBES_H
> +
> +#include <lttng-kernel-version.h>
> +
> +#if LTTNG_KERNEL_RANGE(4,20,0, 4,20,13) \
> + || LTTNG_KERNEL_RANGE(4,19,9, 4,19,26) \
> + || LTTNG_KERNEL_RANGE(4,14,87, 4,14,104)
> +# if defined(CONFIG_ARM) && defined(CONFIG_OPTPROBES)
> +# error "Your kernel is known to have buggy optimized kprobes implementation.
> Fixed by commit 0ac569bf6a7983c0c5747d6df8db9dc05bc92b6c \"ARM: 8834/1: Fix:
> kprobes: optimized kprobes illegal instruction\" in Linux. Disable
> CONFIG_OPTPROBES or upgrade your kernel."
> +# endif /* #if defined(CONFIG_ARM) && defined(CONFIG_OPTPROBES) */
> +#endif
> +
> +#endif /* _LTTNG_BLACKLIST_KPROBES_H */
> diff --git a/probes/lttng-kprobes.c b/probes/lttng-kprobes.c
> index 131333b..c0a15e4 100644
> --- a/probes/lttng-kprobes.c
> +++ b/probes/lttng-kprobes.c
> @@ -15,6 +15,7 @@
> #include <wrapper/vmalloc.h>
> #include <wrapper/irqflags.h>
> #include <lttng-tracer.h>
> +#include <blacklist/kprobes.h>
>
> static
> int lttng_kprobes_handler_pre(struct kprobe *p, struct pt_regs *regs)
> diff --git a/probes/lttng-kretprobes.c b/probes/lttng-kretprobes.c
> index 84eca9b..4b18d46 100644
> --- a/probes/lttng-kretprobes.c
> +++ b/probes/lttng-kretprobes.c
> @@ -16,6 +16,7 @@
> #include <wrapper/vmalloc.h>
> #include <wrapper/irqflags.h>
> #include <lttng-tracer.h>
> +#include <blacklist/kprobes.h>
>
> enum lttng_kretprobe_type {
> EVENT_ENTRY = 0,
> --
> 2.17.1
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
More information about the lttng-dev
mailing list