mirror of
https://git.yoctoproject.org/poky
synced 2026-06-01 13:09:50 +00:00
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>
This commit is contained in:
-92
@@ -1,92 +0,0 @@
|
|||||||
From 5dab3d515b6f5c5ac80c8e7674628495e3bf4ac6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Michael Jeanson <mjeanson@efficios.com>
|
|
||||||
Date: Mon, 22 Aug 2022 14:16:27 -0400
|
|
||||||
Subject: [PATCH] fix: adjust range v5.10.137 in block probe
|
|
||||||
|
|
||||||
See upstream commit, backported in v5.10.137 :
|
|
||||||
|
|
||||||
commit 1cb3032406423b25aa984854b4d78e0100d292dd
|
|
||||||
Author: Christoph Hellwig <hch@lst.de>
|
|
||||||
Date: Thu Dec 3 17:21:39 2020 +0100
|
|
||||||
|
|
||||||
block: remove the request_queue to argument request based tracepoints
|
|
||||||
|
|
||||||
[ Upstream commit a54895fa057c67700270777f7661d8d3c7fda88a ]
|
|
||||||
|
|
||||||
The request_queue can trivially be derived from the request.
|
|
||||||
|
|
||||||
Change-Id: I01f96a437641421faf993b4b031171c372bd0374
|
|
||||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
|
||||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
|
||||||
|
|
||||||
Upstream-Status: Backport [https://github.com/lttng/lttng-modules/commit/5dab3d515b6f5c5ac80c8e7674628495e3bf4ac6]
|
|
||||||
Signed-off-by: Steve Sakoman <steve@sakoman.com>
|
|
||||||
|
|
||||||
---
|
|
||||||
include/instrumentation/events/block.h | 18 ++++++++++++------
|
|
||||||
1 file changed, 12 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/include/instrumentation/events/block.h b/include/instrumentation/events/block.h
|
|
||||||
index 882e6e08..d4821c12 100644
|
|
||||||
--- a/include/instrumentation/events/block.h
|
|
||||||
+++ b/include/instrumentation/events/block.h
|
|
||||||
@@ -366,7 +366,8 @@ LTTNG_TRACEPOINT_EVENT(block_rq_requeue,
|
|
||||||
lttng_req_op(rq), lttng_req_rw(rq), blk_rq_bytes(rq))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
-#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0))
|
|
||||||
+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \
|
|
||||||
+ || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0))
|
|
||||||
/**
|
|
||||||
* block_rq_requeue - place block IO request back on a queue
|
|
||||||
* @rq: block IO operation request
|
|
||||||
@@ -611,7 +612,8 @@ LTTNG_TRACEPOINT_EVENT_CLASS(block_rq,
|
|
||||||
ctf_array_text(char, comm, current->comm, TASK_COMM_LEN)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
-#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0))
|
|
||||||
+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \
|
|
||||||
+ || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0))
|
|
||||||
LTTNG_TRACEPOINT_EVENT_CLASS(block_rq,
|
|
||||||
|
|
||||||
TP_PROTO(struct request *rq),
|
|
||||||
@@ -746,7 +748,8 @@ LTTNG_TRACEPOINT_EVENT_CLASS_CODE(block_rq,
|
|
||||||
)
|
|
||||||
#endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) */
|
|
||||||
|
|
||||||
-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0))
|
|
||||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \
|
|
||||||
+ || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0))
|
|
||||||
/**
|
|
||||||
* block_rq_insert - insert block operation request into queue
|
|
||||||
* @rq: block IO operation request
|
|
||||||
@@ -781,7 +784,8 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq, block_rq_insert,
|
|
||||||
)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0))
|
|
||||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \
|
|
||||||
+ || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0))
|
|
||||||
/**
|
|
||||||
* block_rq_issue - issue pending block IO request operation to device driver
|
|
||||||
* @rq: block IO operation operation request
|
|
||||||
@@ -812,7 +816,8 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq, block_rq_issue,
|
|
||||||
)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0))
|
|
||||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \
|
|
||||||
+ || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0))
|
|
||||||
/**
|
|
||||||
* block_rq_merge - merge request with another one in the elevator
|
|
||||||
* @rq: block IO operation operation request
|
|
||||||
@@ -1632,7 +1637,8 @@ LTTNG_TRACEPOINT_EVENT(block_rq_remap,
|
|
||||||
lttng_req_op(rq), lttng_req_rw(rq), blk_rq_bytes(rq))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
-#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0))
|
|
||||||
+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \
|
|
||||||
+ || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0))
|
|
||||||
/**
|
|
||||||
* block_rq_remap - map request for a block operation request
|
|
||||||
* @rq: block IO operation request
|
|
||||||
-94
@@ -1,94 +0,0 @@
|
|||||||
From 480cce4315ce5bf59a509e8a53a52545f393de68 Mon Sep 17 00:00:00 2001
|
|
||||||
From: He Zhe <zhe.he@windriver.com>
|
|
||||||
Date: Tue, 27 Sep 2022 15:59:42 +0800
|
|
||||||
Subject: [PATCH] wrapper: powerpc64: fix kernel crash caused by
|
|
||||||
do_get_kallsyms
|
|
||||||
|
|
||||||
Kernel crashes on powerpc64 ABIv2 as follow when lttng_tracer initializes,
|
|
||||||
since do_get_kallsyms in lttng_wrapper fails to return a proper address of
|
|
||||||
kallsyms_lookup_name.
|
|
||||||
|
|
||||||
root@qemuppc64:~# lttng create trace_session --live -U net://127.0.0.1
|
|
||||||
Spawning a session daemon
|
|
||||||
lttng_kretprobes: loading out-of-tree module taints kernel.
|
|
||||||
BUG: Unable to handle kernel data access on read at 0xfffffffffffffff8
|
|
||||||
Faulting instruction address: 0xc0000000001f6fd0
|
|
||||||
Oops: Kernel access of bad area, sig: 11 [#1]
|
|
||||||
<snip>
|
|
||||||
NIP [c0000000001f6fd0] module_kallsyms_lookup_name+0xf0/0x180
|
|
||||||
LR [c0000000001f6f28] module_kallsyms_lookup_name+0x48/0x180
|
|
||||||
Call Trace:
|
|
||||||
module_kallsyms_lookup_name+0x34/0x180 (unreliable)
|
|
||||||
kallsyms_lookup_name+0x258/0x2b0
|
|
||||||
wrapper_kallsyms_lookup_name+0x4c/0xd0 [lttng_wrapper]
|
|
||||||
wrapper_get_pfnblock_flags_mask_init+0x28/0x60 [lttng_wrapper]
|
|
||||||
lttng_events_init+0x40/0x344 [lttng_tracer]
|
|
||||||
do_one_initcall+0x78/0x340
|
|
||||||
do_init_module+0x6c/0x2f0
|
|
||||||
__do_sys_finit_module+0xd0/0x120
|
|
||||||
system_call_exception+0x194/0x2f0
|
|
||||||
system_call_vectored_common+0xe8/0x278
|
|
||||||
<snip>
|
|
||||||
|
|
||||||
do_get_kallsyms makes use of kprobe_register and in turn kprobe_lookup_name
|
|
||||||
to get the address of the kernel function kallsyms_lookup_name. In case of
|
|
||||||
PPC64_ELF_ABI_v2, when kprobes are placed at function entry,
|
|
||||||
kprobe_lookup_name adjusts the global entry point of the function returned
|
|
||||||
by kallsyms_lookup_name to the local entry point(at some fixed offset of
|
|
||||||
global one). This adjustment is all for kprobes to be able to work properly.
|
|
||||||
Global and local entry point are defined in powerpc64 ABIv2.
|
|
||||||
|
|
||||||
When the local entry point is given, some instructions at the beginning of
|
|
||||||
the function are skipped and thus causes the above kernel crash. We just
|
|
||||||
want to make a simple function call which needs global entry point.
|
|
||||||
|
|
||||||
This patch adds 4 bytes which is the length of one instruction to
|
|
||||||
kallsyms_lookup_name so that it will not trigger the global to local
|
|
||||||
adjustment, and then substracts 4 bytes from the returned address. See the
|
|
||||||
following kernel change for more details.
|
|
||||||
|
|
||||||
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=290e3070762ac80e5fc4087d8c4de7e3f1d90aca
|
|
||||||
|
|
||||||
Upstream-Status: Backport
|
|
||||||
|
|
||||||
Signed-off-by: He Zhe <zhe.he@windriver.com>
|
|
||||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
|
||||||
Change-Id: I34e68e886b97e3976d0b5e25be295a8bb866c1a4
|
|
||||||
---
|
|
||||||
src/wrapper/kallsyms.c | 16 ++++++++++++++++
|
|
||||||
1 file changed, 16 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/wrapper/kallsyms.c b/src/wrapper/kallsyms.c
|
|
||||||
index d2848764..93017adc 100644
|
|
||||||
--- a/src/wrapper/kallsyms.c
|
|
||||||
+++ b/src/wrapper/kallsyms.c
|
|
||||||
@@ -39,10 +39,26 @@ unsigned long do_get_kallsyms(void)
|
|
||||||
memset(&probe, 0, sizeof(probe));
|
|
||||||
probe.pre_handler = dummy_kprobe_handler;
|
|
||||||
probe.symbol_name = "kallsyms_lookup_name";
|
|
||||||
+#ifdef PPC64_ELF_ABI_v2
|
|
||||||
+ /*
|
|
||||||
+ * With powerpc64 ABIv2, we need the global entry point of
|
|
||||||
+ * kallsyms_lookup_name to call it later, while kprobe_register would
|
|
||||||
+ * automatically adjust the global entry point to the local entry point,
|
|
||||||
+ * when a kprobe was registered at a function entry. So we add 4 bytes
|
|
||||||
+ * which is the length of one instruction to kallsyms_lookup_name to
|
|
||||||
+ * avoid the adjustment.
|
|
||||||
+ */
|
|
||||||
+ probe.offset = 4;
|
|
||||||
+#endif
|
|
||||||
ret = register_kprobe(&probe);
|
|
||||||
if (ret)
|
|
||||||
return 0;
|
|
||||||
+#ifdef PPC64_ELF_ABI_v2
|
|
||||||
+ /* Substract 4 bytes to get what we originally want */
|
|
||||||
+ addr = (unsigned long)(((char *)probe.addr) - 4);
|
|
||||||
+#else
|
|
||||||
addr = (unsigned long)probe.addr;
|
|
||||||
+#endif
|
|
||||||
#ifdef CONFIG_ARM
|
|
||||||
#ifdef CONFIG_THUMB2_KERNEL
|
|
||||||
if (addr)
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
||||||
+1
-3
@@ -11,14 +11,12 @@ include lttng-platforms.inc
|
|||||||
|
|
||||||
SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \
|
SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \
|
||||||
file://0009-Rename-genhd-wrapper-to-blkdev.patch \
|
file://0009-Rename-genhd-wrapper-to-blkdev.patch \
|
||||||
file://0001-fix-adjust-range-v5.10.137-in-block-probe.patch \
|
|
||||||
file://0001-wrapper-powerpc64-fix-kernel-crash-caused-by-do_get_.patch \
|
|
||||||
"
|
"
|
||||||
|
|
||||||
# Use :append here so that the patch is applied also when using devupstream
|
# Use :append here so that the patch is applied also when using devupstream
|
||||||
SRC_URI:append = " file://0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch"
|
SRC_URI:append = " file://0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch"
|
||||||
|
|
||||||
SRC_URI[sha256sum] = "eceb3428d80e85a9f008425beb9526195c9f7f02b302f28add56df53aef3e708"
|
SRC_URI[sha256sum] = "5a99679df7903160cbde3918fee5af90ffafc90fc96ccdefaa57cf230492b234"
|
||||||
|
|
||||||
export INSTALL_MOD_DIR="kernel/lttng-modules"
|
export INSTALL_MOD_DIR="kernel/lttng-modules"
|
||||||
|
|
||||||
Reference in New Issue
Block a user