Puranjay Mohan
2c79bd34af
arm64: prohibit probing on arch_kunwind_consume_entry()
...
Make arch_kunwind_consume_entry() as __always_inline otherwise the
compiler might not inline it and allow attaching probes to it.
Without this, just probing arch_kunwind_consume_entry() via
<tracefs>/kprobe_events will crash the kernel on arm64.
The crash can be reproduced using the following compiler and kernel
combination:
clang version 19.0.0git (https://github.com/llvm/llvm-project.git d68d29516102252f6bf6dc23fb22cef144ca1cb3)
commit 87adedeba51a ("Merge tag 'net-6.8-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net")
[root@localhost ~]# echo 'p arch_kunwind_consume_entry' > /sys/kernel/debug/tracing/kprobe_events
[root@localhost ~]# echo 1 > /sys/kernel/debug/tracing/events/kprobes/enable
Modules linked in: aes_ce_blk aes_ce_cipher ghash_ce sha2_ce virtio_net sha256_arm64 sha1_ce arm_smccc_trng net_failover failover virtio_mmio uio_pdrv_genirq uio sch_fq_codel dm_mod dax configfs
CPU: 3 PID: 1405 Comm: bash Not tainted 6.8.0-rc6+ #14
Hardware name: linux,dummy-virt (DT)
pstate: 604003c5 (nZCv DAIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : kprobe_breakpoint_handler+0x17c/0x258
lr : kprobe_breakpoint_handler+0x17c/0x258
sp : ffff800085d6ab60
x29: ffff800085d6ab60 x28: ffff0000066f0040 x27: ffff0000066f0b20
x26: ffff800081fa7b0c x25: 0000000000000002 x24: ffff00000b29bd18
x23: ffff00007904c590 x22: ffff800081fa6590 x21: ffff800081fa6588
x20: ffff00000b29bd18 x19: ffff800085d6ac40 x18: 0000000000000079
x17: 0000000000000001 x16: ffffffffffffffff x15: 0000000000000004
x14: ffff80008277a940 x13: 0000000000000003 x12: 0000000000000003
x11: 00000000fffeffff x10: c0000000fffeffff x9 : aa95616fdf80cc00
x8 : aa95616fdf80cc00 x7 : 205d343137373231 x6 : ffff800080fb48ec
x5 : 0000000000000000 x4 : 0000000000000001 x3 : 0000000000000000
x2 : 0000000000000000 x1 : ffff800085d6a910 x0 : 0000000000000079
Call trace:
kprobes: Failed to recover from reentered kprobes.
kprobes: Dump kprobe:
.symbol_name = arch_kunwind_consume_entry, .offset = 0, .addr = arch_kunwind_consume_entry+0x0/0x40
------------[ cut here ]------------
kernel BUG at arch/arm64/kernel/probes/kprobes.c:241!
kprobes: Failed to recover from reentered kprobes.
kprobes: Dump kprobe:
.symbol_name = arch_kunwind_consume_entry, .offset = 0, .addr = arch_kunwind_consume_entry+0x0/0x40
Fixes: 1aba06e7b2b4 ("arm64: stacktrace: factor out kunwind_stack_walk()")
Signed-off-by: Puranjay Mohan <puranjay12@gmail.com>
Reviewed-by: Mark Rutland <mark.rutland@arm.com>
Link: https://lore.kernel.org/r/20240229231620.24846-1-puranjay12@gmail.com
Signed-off-by: Will Deacon <will@kernel.org>
2024-03-04 13:00:00 +00:00
..
2023-12-12 11:06:27 +00:00
2023-02-07 18:25:10 +00:00
2023-10-28 21:09:02 +09:00
2024-01-30 11:59:17 +00:00
2022-07-19 19:10:28 +01:00
2023-09-25 17:15:28 +01:00
2023-02-24 14:21:49 +00:00
Merge branches 'for-next/kpti', 'for-next/missing-proto-warn', 'for-next/iss2-decode', 'for-next/kselftest', 'for-next/misc', 'for-next/feat_mops', 'for-next/module-alloc', 'for-next/sysreg', 'for-next/cpucap', 'for-next/acpi', 'for-next/kdump', 'for-next/acpi-doc', 'for-next/doc' and 'for-next/tpidr2-fix', remote-tracking branch 'arm64/for-next/perf' into for-next/core
2023-06-23 18:32:20 +01:00
2023-10-10 15:22:02 -07:00
2024-01-12 12:48:27 +00:00
2023-04-13 09:32:33 +01:00
2023-04-05 17:51:47 +01:00
2024-02-15 11:47:22 +00:00
2023-05-02 12:42:22 +01:00
2024-01-17 13:03:37 -08:00
2023-07-31 14:45:38 +01:00
2023-12-05 11:38:03 +00:00
2023-04-13 12:27:11 +01:00
2022-04-29 14:37:59 -07:00
2023-04-14 13:39:47 +01:00
2023-04-20 15:43:45 +02:00
2023-01-16 15:27:31 +01:00
2023-11-03 15:44:25 -10:00
2023-01-05 15:12:12 +00:00
2023-08-11 12:23:48 +01:00
2023-01-20 12:23:06 +00:00
2023-06-20 18:38:37 -04:00
2024-01-18 11:00:09 +00:00
2024-02-20 12:19:16 +00:00
2023-06-06 17:39:05 +01:00
2023-12-12 11:06:28 +00:00
2021-10-01 13:31:00 +01:00
2023-06-21 13:33:49 +01:00
2023-08-18 17:04:09 +01:00
2023-07-03 15:32:22 -07:00
2023-09-25 17:15:28 +01:00
2023-12-12 11:13:53 +00:00
2023-10-17 16:33:39 +02:00
2023-12-13 12:09:00 +00:00
2022-06-24 09:48:55 +02:00
2023-12-12 11:13:53 +00:00
2023-12-20 15:02:57 -08:00
2023-04-14 13:39:47 +01:00
2023-06-12 06:33:48 -06:00
2023-12-20 15:02:57 -08:00
2023-12-20 15:02:57 -08:00
2024-01-30 11:52:46 +00:00
2023-10-26 17:10:18 +01:00
2023-06-06 17:39:06 +01:00
2023-11-02 19:38:47 -10:00
2022-11-09 18:11:56 +00:00
2023-01-26 17:54:15 +00:00
2023-01-24 11:49:43 +00:00
2023-07-31 14:45:38 +01:00
2023-04-13 12:27:11 +01:00
2022-09-22 15:06:02 +01:00
2021-07-28 18:33:49 +01:00
2023-11-01 20:51:41 -10:00
2023-10-16 14:17:06 +01:00
2022-09-26 10:13:14 -07:00
2024-02-15 11:48:00 +00:00
2022-09-29 18:04:25 +01:00
2022-05-17 14:25:35 +01:00
2021-12-10 14:06:04 +00:00
2023-08-04 17:35:33 +01:00
2023-12-06 12:41:49 +09:00
2023-08-02 15:01:50 -07:00
2024-02-09 16:34:23 +00:00
2022-07-01 12:05:45 +01:00
2023-05-02 12:42:22 +01:00
2021-07-21 11:23:25 +01:00
2022-09-26 10:13:14 -07:00
2023-12-13 16:02:01 +00:00
2024-03-04 13:00:00 +00:00
2024-02-20 12:19:15 +00:00
2023-10-16 14:17:06 +01:00
2023-08-11 12:23:48 +01:00
2021-12-10 14:06:04 +00:00
2023-12-23 15:52:36 +01:00
2023-11-02 15:45:15 -10:00
2023-10-16 14:17:04 +01:00
2023-05-02 13:12:45 +01:00
2023-06-09 17:44:22 -07:00