All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH lttng-modules v2 2/2] Move timekeeping blacklisting to a header file
       [not found] <20190307195800.17911-1-jonathan.rajotte-julien@efficios.com>
@ 2019-03-07 19:58 ` Jonathan Rajotte
  2019-03-07 20:17 ` [PATCH lttng-modules v2 1/2] Blacklist: kprobe for arm Mathieu Desnoyers
       [not found] ` <20190307195800.17911-2-jonathan.rajotte-julien@efficios.com>
  2 siblings, 0 replies; 4+ messages in thread
From: Jonathan Rajotte @ 2019-03-07 19:58 UTC (permalink / raw)
  To: lttng-dev

Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
---
 blacklist/timekeeping.h | 20 ++++++++++++++++++++
 wrapper/trace-clock.h   |  6 +-----
 2 files changed, 21 insertions(+), 5 deletions(-)
 create mode 100644 blacklist/timekeeping.h

diff --git a/blacklist/timekeeping.h b/blacklist/timekeeping.h
new file mode 100644
index 0000000..f9405ea
--- /dev/null
+++ b/blacklist/timekeeping.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: (GPL-2.0 OR LGPL-2.1)
+ *
+ * blacklist/timekeeping.h
+ *
+ * Blacklist of kernel for buggy timekeeping implementation.
+ *
+ * Copyright (C) 2019 Jonathan Rajotte-Julien <jonathan.rajotte-julien@efficios.com>
+ */
+
+#ifndef _LTTNG_BLACKLIST_TIMEKEEPING_H
+#define _LTTNG_BLACKLIST_TIMEKEEPING_H
+
+#include <lttng-kernel-version.h>
+
+#if ((LTTNG_KERNEL_RANGE(3,10,0, 3,10,14) && !LTTNG_RHEL_KERNEL_RANGE(3,10,0,123,0,0, 3,10,14,0,0,0)) \
+	|| LTTNG_KERNEL_RANGE(3,11,0, 3,11,3))
+# error "Linux kernels 3.10 and 3.11 introduce a deadlock in the timekeeping subsystem. Fixed by commit 7bd36014460f793c19e7d6c94dab67b0afcfcb7f \"timekeeping: Fix HRTICK related deadlock from ntp lock changes\" in Linux."
+#endif
+
+#endif /* _LTTNG_BLACKLIST_TIMEKEEPING_H */
diff --git a/wrapper/trace-clock.h b/wrapper/trace-clock.h
index a98f034..9f4e366 100644
--- a/wrapper/trace-clock.h
+++ b/wrapper/trace-clock.h
@@ -27,11 +27,7 @@
 #include <wrapper/compiler.h>
 #include <wrapper/percpu-defs.h>
 #include <wrapper/random.h>
-
-#if ((LTTNG_KERNEL_RANGE(3,10,0, 3,10,14) && !LTTNG_RHEL_KERNEL_RANGE(3,10,0,123,0,0, 3,10,14,0,0,0)) \
-	|| LTTNG_KERNEL_RANGE(3,11,0, 3,11,3))
-#error "Linux kernels 3.10 and 3.11 introduce a deadlock in the timekeeping subsystem. Fixed by commit 7bd36014460f793c19e7d6c94dab67b0afcfcb7f \"timekeeping: Fix HRTICK related deadlock from ntp lock changes\" in Linux."
-#endif
+#include <blacklist/timekeeping.h>
 
 extern struct lttng_trace_clock *lttng_trace_clock;
 
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH lttng-modules v2 1/2] Blacklist: kprobe for arm
       [not found] <20190307195800.17911-1-jonathan.rajotte-julien@efficios.com>
  2019-03-07 19:58 ` [PATCH lttng-modules v2 2/2] Move timekeeping blacklisting to a header file Jonathan Rajotte
@ 2019-03-07 20:17 ` Mathieu Desnoyers
       [not found] ` <20190307195800.17911-2-jonathan.rajotte-julien@efficios.com>
  2 siblings, 0 replies; 4+ messages in thread
From: Mathieu Desnoyers @ 2019-03-07 20:17 UTC (permalink / raw)
  To: Jonathan Rajotte; +Cc: lttng-dev

Merged into master, 2.11, 2.10, 2.9, thanks!

Mathieu

----- On Mar 7, 2019, at 2:57 PM, Jonathan Rajotte jonathan.rajotte-julien@efficios.com wrote:

> This upstream kernel commit broke optimized kprobe.
> 
> commit e46daee53bb50bde38805f1823a182979724c229
> Author: Kees Cook <keescook@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@redhat.com>
>    Fixes: 6974f0c4555e ("include/linux/string.h: add the option of fortified
>    string.h functions")
>    Cc: stable@vger.kernel.org
>    Acked-by: Laura Abbott <labbott@redhat.com>
>    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
>    Tested-by: William Cohen <wcohen@redhat.com>
>    Signed-off-by: Kees Cook <keescook@chromium.org>
>    Signed-off-by: Russell King <rmk+kernel@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@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@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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH lttng-modules v2 2/2] Move timekeeping blacklisting to a header file
       [not found] ` <20190307195800.17911-2-jonathan.rajotte-julien@efficios.com>
@ 2019-03-07 20:17   ` Mathieu Desnoyers
  0 siblings, 0 replies; 4+ messages in thread
From: Mathieu Desnoyers @ 2019-03-07 20:17 UTC (permalink / raw)
  To: Jonathan Rajotte; +Cc: lttng-dev

Merged into master and 2.11, thanks!

Mathieu

----- On Mar 7, 2019, at 2:58 PM, Jonathan Rajotte jonathan.rajotte-julien@efficios.com wrote:

> Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
> ---
> blacklist/timekeeping.h | 20 ++++++++++++++++++++
> wrapper/trace-clock.h   |  6 +-----
> 2 files changed, 21 insertions(+), 5 deletions(-)
> create mode 100644 blacklist/timekeeping.h
> 
> diff --git a/blacklist/timekeeping.h b/blacklist/timekeeping.h
> new file mode 100644
> index 0000000..f9405ea
> --- /dev/null
> +++ b/blacklist/timekeeping.h
> @@ -0,0 +1,20 @@
> +/* SPDX-License-Identifier: (GPL-2.0 OR LGPL-2.1)
> + *
> + * blacklist/timekeeping.h
> + *
> + * Blacklist of kernel for buggy timekeeping implementation.
> + *
> + * Copyright (C) 2019 Jonathan Rajotte-Julien
> <jonathan.rajotte-julien@efficios.com>
> + */
> +
> +#ifndef _LTTNG_BLACKLIST_TIMEKEEPING_H
> +#define _LTTNG_BLACKLIST_TIMEKEEPING_H
> +
> +#include <lttng-kernel-version.h>
> +
> +#if ((LTTNG_KERNEL_RANGE(3,10,0, 3,10,14) &&
> !LTTNG_RHEL_KERNEL_RANGE(3,10,0,123,0,0, 3,10,14,0,0,0)) \
> +	|| LTTNG_KERNEL_RANGE(3,11,0, 3,11,3))
> +# error "Linux kernels 3.10 and 3.11 introduce a deadlock in the timekeeping
> subsystem. Fixed by commit 7bd36014460f793c19e7d6c94dab67b0afcfcb7f
> \"timekeeping: Fix HRTICK related deadlock from ntp lock changes\" in Linux."
> +#endif
> +
> +#endif /* _LTTNG_BLACKLIST_TIMEKEEPING_H */
> diff --git a/wrapper/trace-clock.h b/wrapper/trace-clock.h
> index a98f034..9f4e366 100644
> --- a/wrapper/trace-clock.h
> +++ b/wrapper/trace-clock.h
> @@ -27,11 +27,7 @@
> #include <wrapper/compiler.h>
> #include <wrapper/percpu-defs.h>
> #include <wrapper/random.h>
> -
> -#if ((LTTNG_KERNEL_RANGE(3,10,0, 3,10,14) &&
> !LTTNG_RHEL_KERNEL_RANGE(3,10,0,123,0,0, 3,10,14,0,0,0)) \
> -	|| LTTNG_KERNEL_RANGE(3,11,0, 3,11,3))
> -#error "Linux kernels 3.10 and 3.11 introduce a deadlock in the timekeeping
> subsystem. Fixed by commit 7bd36014460f793c19e7d6c94dab67b0afcfcb7f
> \"timekeeping: Fix HRTICK related deadlock from ntp lock changes\" in Linux."
> -#endif
> +#include <blacklist/timekeeping.h>
> 
> extern struct lttng_trace_clock *lttng_trace_clock;
> 
> --
> 2.17.1

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH lttng-modules v2 1/2] Blacklist: kprobe for arm
@ 2019-03-07 19:57 Jonathan Rajotte
  0 siblings, 0 replies; 4+ messages in thread
From: Jonathan Rajotte @ 2019-03-07 19:57 UTC (permalink / raw)
  To: lttng-dev

This upstream kernel commit broke optimized kprobe.

commit e46daee53bb50bde38805f1823a182979724c229
Author: Kees Cook <keescook@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@redhat.com>
    Fixes: 6974f0c4555e ("include/linux/string.h: add the option of fortified string.h functions")
    Cc: stable@vger.kernel.org
    Acked-by: Laura Abbott <labbott@redhat.com>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Tested-by: William Cohen <wcohen@redhat.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Russell King <rmk+kernel@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@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@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

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-03-07 20:17 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20190307195800.17911-1-jonathan.rajotte-julien@efficios.com>
2019-03-07 19:58 ` [PATCH lttng-modules v2 2/2] Move timekeeping blacklisting to a header file Jonathan Rajotte
2019-03-07 20:17 ` [PATCH lttng-modules v2 1/2] Blacklist: kprobe for arm Mathieu Desnoyers
     [not found] ` <20190307195800.17911-2-jonathan.rajotte-julien@efficios.com>
2019-03-07 20:17   ` [PATCH lttng-modules v2 2/2] Move timekeeping blacklisting to a header file Mathieu Desnoyers
2019-03-07 19:57 [PATCH lttng-modules v2 1/2] Blacklist: kprobe for arm Jonathan Rajotte

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.