summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2022-11-02 09:26:49 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2022-11-24 15:30:00 +0000
commitb3fbe08078a7b757d88b92ce29dcd6ed308ae6f5 (patch)
treef8c266d1148f10035fed9bf4f730297b262fc6d5
parentbb3757620c2c2f643f8b6f979e961d18b1f3032f (diff)
downloadpoky-b3fbe08078a7b757d88b92ce29dcd6ed308ae6f5.tar.gz
lttng-modules: upgrade 2.13.5 -> 2.13.7
2022-09-30 (National Day for Truth and Reconciliation) LTTng modules 2.13.7 * Fix: handle integer capture page faults as skip field 2022-09-30 (National Day for Truth and Reconciliation) LTTng modules 2.13.6 * Fix: bytecode validator: reject specialized load field/context ref instructions * Fix: bytecode validator: reject specialized load instructions * Fix: honor "user" attribute for array/sequence of user integers * wrapper: powerpc64: fix kernel crash caused by do_get_kallsyms * Fix: event notification: Remove duplicate event enabled check * Fix: event notification capture: validate buffer length * Fix: handle capture page faults as skip field * Fix: event notification capture error handling * Fix: capture_sequence_element_{un,}signed: handle user-space input * Fix: notification capture: handle userspace strings * Implement lttng_msgpack_write_user_str * Fix: bytecode interpreter: LOAD_FIELD: handle user fields * Fix: move "user" attribute from field to type * Introduce lttng_copy_from_user_check_nofault * fix: adjust range v5.10.137 in block probe Remove "fix: adjust range v5.10.137 in block probe" and "wrapper: powerpc64: fix kernel crash caused by do_get_kallsyms" since they are included in this version bump. (From OE-Core rev: 7f5ec92b3865fcd094898f4cd2d7daba76464a5e) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> (cherry picked from commit 1243d6afc075e3c89ca69af214e70c0d159cb832) Signed-off-by: Steve Sakoman <steve@sakoman.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-kernel/lttng/lttng-modules/0001-fix-adjust-range-v5.10.137-in-block-probe.patch92
-rw-r--r--meta/recipes-kernel/lttng/lttng-modules/0001-wrapper-powerpc64-fix-kernel-crash-caused-by-do_get_.patch94
-rw-r--r--meta/recipes-kernel/lttng/lttng-modules_2.13.7.bb (renamed from meta/recipes-kernel/lttng/lttng-modules_2.13.5.bb)4
3 files changed, 1 insertions, 189 deletions
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-fix-adjust-range-v5.10.137-in-block-probe.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-fix-adjust-range-v5.10.137-in-block-probe.patch
deleted file mode 100644
index 1c3918be5c..0000000000
--- a/meta/recipes-kernel/lttng/lttng-modules/0001-fix-adjust-range-v5.10.137-in-block-probe.patch
+++ /dev/null
@@ -1,92 +0,0 @@
1From 5dab3d515b6f5c5ac80c8e7674628495e3bf4ac6 Mon Sep 17 00:00:00 2001
2From: Michael Jeanson <mjeanson@efficios.com>
3Date: Mon, 22 Aug 2022 14:16:27 -0400
4Subject: [PATCH] fix: adjust range v5.10.137 in block probe
5
6See upstream commit, backported in v5.10.137 :
7
8commit 1cb3032406423b25aa984854b4d78e0100d292dd
9Author: Christoph Hellwig <hch@lst.de>
10Date: Thu Dec 3 17:21:39 2020 +0100
11
12 block: remove the request_queue to argument request based tracepoints
13
14 [ Upstream commit a54895fa057c67700270777f7661d8d3c7fda88a ]
15
16 The request_queue can trivially be derived from the request.
17
18Change-Id: I01f96a437641421faf993b4b031171c372bd0374
19Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
20Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
21
22Upstream-Status: Backport [https://github.com/lttng/lttng-modules/commit/5dab3d515b6f5c5ac80c8e7674628495e3bf4ac6]
23Signed-off-by: Steve Sakoman <steve@sakoman.com>
24
25---
26 include/instrumentation/events/block.h | 18 ++++++++++++------
27 1 file changed, 12 insertions(+), 6 deletions(-)
28
29diff --git a/include/instrumentation/events/block.h b/include/instrumentation/events/block.h
30index 882e6e08..d4821c12 100644
31--- a/include/instrumentation/events/block.h
32+++ b/include/instrumentation/events/block.h
33@@ -366,7 +366,8 @@ LTTNG_TRACEPOINT_EVENT(block_rq_requeue,
34 lttng_req_op(rq), lttng_req_rw(rq), blk_rq_bytes(rq))
35 )
36 )
37-#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0))
38+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \
39+ || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0))
40 /**
41 * block_rq_requeue - place block IO request back on a queue
42 * @rq: block IO operation request
43@@ -611,7 +612,8 @@ LTTNG_TRACEPOINT_EVENT_CLASS(block_rq,
44 ctf_array_text(char, comm, current->comm, TASK_COMM_LEN)
45 )
46 )
47-#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0))
48+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \
49+ || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0))
50 LTTNG_TRACEPOINT_EVENT_CLASS(block_rq,
51
52 TP_PROTO(struct request *rq),
53@@ -746,7 +748,8 @@ LTTNG_TRACEPOINT_EVENT_CLASS_CODE(block_rq,
54 )
55 #endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) */
56
57-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0))
58+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \
59+ || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0))
60 /**
61 * block_rq_insert - insert block operation request into queue
62 * @rq: block IO operation request
63@@ -781,7 +784,8 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq, block_rq_insert,
64 )
65 #endif
66
67-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0))
68+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \
69+ || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0))
70 /**
71 * block_rq_issue - issue pending block IO request operation to device driver
72 * @rq: block IO operation operation request
73@@ -812,7 +816,8 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq, block_rq_issue,
74 )
75 #endif
76
77-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0))
78+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \
79+ || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0))
80 /**
81 * block_rq_merge - merge request with another one in the elevator
82 * @rq: block IO operation operation request
83@@ -1632,7 +1637,8 @@ LTTNG_TRACEPOINT_EVENT(block_rq_remap,
84 lttng_req_op(rq), lttng_req_rw(rq), blk_rq_bytes(rq))
85 )
86 )
87-#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0))
88+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \
89+ || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0))
90 /**
91 * block_rq_remap - map request for a block operation request
92 * @rq: block IO operation request
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-wrapper-powerpc64-fix-kernel-crash-caused-by-do_get_.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-wrapper-powerpc64-fix-kernel-crash-caused-by-do_get_.patch
deleted file mode 100644
index b3b191c7ac..0000000000
--- a/meta/recipes-kernel/lttng/lttng-modules/0001-wrapper-powerpc64-fix-kernel-crash-caused-by-do_get_.patch
+++ /dev/null
@@ -1,94 +0,0 @@
1From 480cce4315ce5bf59a509e8a53a52545f393de68 Mon Sep 17 00:00:00 2001
2From: He Zhe <zhe.he@windriver.com>
3Date: Tue, 27 Sep 2022 15:59:42 +0800
4Subject: [PATCH] wrapper: powerpc64: fix kernel crash caused by
5 do_get_kallsyms
6
7Kernel crashes on powerpc64 ABIv2 as follow when lttng_tracer initializes,
8since do_get_kallsyms in lttng_wrapper fails to return a proper address of
9kallsyms_lookup_name.
10
11root@qemuppc64:~# lttng create trace_session --live -U net://127.0.0.1
12Spawning a session daemon
13lttng_kretprobes: loading out-of-tree module taints kernel.
14BUG: Unable to handle kernel data access on read at 0xfffffffffffffff8
15Faulting instruction address: 0xc0000000001f6fd0
16Oops: Kernel access of bad area, sig: 11 [#1]
17<snip>
18NIP [c0000000001f6fd0] module_kallsyms_lookup_name+0xf0/0x180
19LR [c0000000001f6f28] module_kallsyms_lookup_name+0x48/0x180
20Call Trace:
21module_kallsyms_lookup_name+0x34/0x180 (unreliable)
22kallsyms_lookup_name+0x258/0x2b0
23wrapper_kallsyms_lookup_name+0x4c/0xd0 [lttng_wrapper]
24wrapper_get_pfnblock_flags_mask_init+0x28/0x60 [lttng_wrapper]
25lttng_events_init+0x40/0x344 [lttng_tracer]
26do_one_initcall+0x78/0x340
27do_init_module+0x6c/0x2f0
28__do_sys_finit_module+0xd0/0x120
29system_call_exception+0x194/0x2f0
30system_call_vectored_common+0xe8/0x278
31<snip>
32
33do_get_kallsyms makes use of kprobe_register and in turn kprobe_lookup_name
34to get the address of the kernel function kallsyms_lookup_name. In case of
35PPC64_ELF_ABI_v2, when kprobes are placed at function entry,
36kprobe_lookup_name adjusts the global entry point of the function returned
37by kallsyms_lookup_name to the local entry point(at some fixed offset of
38global one). This adjustment is all for kprobes to be able to work properly.
39Global and local entry point are defined in powerpc64 ABIv2.
40
41When the local entry point is given, some instructions at the beginning of
42the function are skipped and thus causes the above kernel crash. We just
43want to make a simple function call which needs global entry point.
44
45This patch adds 4 bytes which is the length of one instruction to
46kallsyms_lookup_name so that it will not trigger the global to local
47adjustment, and then substracts 4 bytes from the returned address. See the
48following kernel change for more details.
49
50https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=290e3070762ac80e5fc4087d8c4de7e3f1d90aca
51
52Upstream-Status: Backport
53
54Signed-off-by: He Zhe <zhe.he@windriver.com>
55Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
56Change-Id: I34e68e886b97e3976d0b5e25be295a8bb866c1a4
57---
58 src/wrapper/kallsyms.c | 16 ++++++++++++++++
59 1 file changed, 16 insertions(+)
60
61diff --git a/src/wrapper/kallsyms.c b/src/wrapper/kallsyms.c
62index d2848764..93017adc 100644
63--- a/src/wrapper/kallsyms.c
64+++ b/src/wrapper/kallsyms.c
65@@ -39,10 +39,26 @@ unsigned long do_get_kallsyms(void)
66 memset(&probe, 0, sizeof(probe));
67 probe.pre_handler = dummy_kprobe_handler;
68 probe.symbol_name = "kallsyms_lookup_name";
69+#ifdef PPC64_ELF_ABI_v2
70+ /*
71+ * With powerpc64 ABIv2, we need the global entry point of
72+ * kallsyms_lookup_name to call it later, while kprobe_register would
73+ * automatically adjust the global entry point to the local entry point,
74+ * when a kprobe was registered at a function entry. So we add 4 bytes
75+ * which is the length of one instruction to kallsyms_lookup_name to
76+ * avoid the adjustment.
77+ */
78+ probe.offset = 4;
79+#endif
80 ret = register_kprobe(&probe);
81 if (ret)
82 return 0;
83+#ifdef PPC64_ELF_ABI_v2
84+ /* Substract 4 bytes to get what we originally want */
85+ addr = (unsigned long)(((char *)probe.addr) - 4);
86+#else
87 addr = (unsigned long)probe.addr;
88+#endif
89 #ifdef CONFIG_ARM
90 #ifdef CONFIG_THUMB2_KERNEL
91 if (addr)
92--
932.17.1
94
diff --git a/meta/recipes-kernel/lttng/lttng-modules_2.13.5.bb b/meta/recipes-kernel/lttng/lttng-modules_2.13.7.bb
index 307fb912cf..49c584dff4 100644
--- a/meta/recipes-kernel/lttng/lttng-modules_2.13.5.bb
+++ b/meta/recipes-kernel/lttng/lttng-modules_2.13.7.bb
@@ -11,14 +11,12 @@ include lttng-platforms.inc
11 11
12SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \ 12SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \
13 file://0009-Rename-genhd-wrapper-to-blkdev.patch \ 13 file://0009-Rename-genhd-wrapper-to-blkdev.patch \
14 file://0001-fix-adjust-range-v5.10.137-in-block-probe.patch \
15 file://0001-wrapper-powerpc64-fix-kernel-crash-caused-by-do_get_.patch \
16 " 14 "
17 15
18# Use :append here so that the patch is applied also when using devupstream 16# Use :append here so that the patch is applied also when using devupstream
19SRC_URI:append = " file://0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch" 17SRC_URI:append = " file://0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch"
20 18
21SRC_URI[sha256sum] = "eceb3428d80e85a9f008425beb9526195c9f7f02b302f28add56df53aef3e708" 19SRC_URI[sha256sum] = "5a99679df7903160cbde3918fee5af90ffafc90fc96ccdefaa57cf230492b234"
22 20
23export INSTALL_MOD_DIR="kernel/lttng-modules" 21export INSTALL_MOD_DIR="kernel/lttng-modules"
24 22