CVE-2024-41004
Publication date:
12/07/2024
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
tracing: Build event generation tests only as modules<br />
<br />
The kprobes and synth event generation test modules add events and lock<br />
(get a reference) those event file reference in module init function,<br />
and unlock and delete it in module exit function. This is because those<br />
are designed for playing as modules.<br />
<br />
If we make those modules as built-in, those events are left locked in the<br />
kernel, and never be removed. This causes kprobe event self-test failure<br />
as below.<br />
<br />
[ 97.349708] ------------[ cut here ]------------<br />
[ 97.353453] WARNING: CPU: 3 PID: 1 at kernel/trace/trace_kprobe.c:2133 kprobe_trace_self_tests_init+0x3f1/0x480<br />
[ 97.357106] Modules linked in:<br />
[ 97.358488] CPU: 3 PID: 1 Comm: swapper/0 Not tainted 6.9.0-g699646734ab5-dirty #14<br />
[ 97.361556] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014<br />
[ 97.363880] RIP: 0010:kprobe_trace_self_tests_init+0x3f1/0x480<br />
[ 97.365538] Code: a8 24 08 82 e9 ae fd ff ff 90 0f 0b 90 48 c7 c7 e5 aa 0b 82 e9 ee fc ff ff 90 0f 0b 90 48 c7 c7 2d 61 06 82 e9 8e fd ff ff 90 0b 90 48 c7 c7 33 0b 0c 82 89 c6 e8 6e 03 1f ff 41 ff c7 e9 90<br />
[ 97.370429] RSP: 0000:ffffc90000013b50 EFLAGS: 00010286<br />
[ 97.371852] RAX: 00000000fffffff0 RBX: ffff888005919c00 RCX: 0000000000000000<br />
[ 97.373829] RDX: ffff888003f40000 RSI: ffffffff8236a598 RDI: ffff888003f40a68<br />
[ 97.375715] RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000000<br />
[ 97.377675] R10: ffffffff811c9ae5 R11: ffffffff8120c4e0 R12: 0000000000000000<br />
[ 97.379591] R13: 0000000000000001 R14: 0000000000000015 R15: 0000000000000000<br />
[ 97.381536] FS: 0000000000000000(0000) GS:ffff88807dcc0000(0000) knlGS:0000000000000000<br />
[ 97.383813] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br />
[ 97.385449] CR2: 0000000000000000 CR3: 0000000002244000 CR4: 00000000000006b0<br />
[ 97.387347] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000<br />
[ 97.389277] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400<br />
[ 97.391196] Call Trace:<br />
[ 97.391967] <br />
[ 97.392647] ? __warn+0xcc/0x180<br />
[ 97.393640] ? kprobe_trace_self_tests_init+0x3f1/0x480<br />
[ 97.395181] ? report_bug+0xbd/0x150<br />
[ 97.396234] ? handle_bug+0x3e/0x60<br />
[ 97.397311] ? exc_invalid_op+0x1a/0x50<br />
[ 97.398434] ? asm_exc_invalid_op+0x1a/0x20<br />
[ 97.399652] ? trace_kprobe_is_busy+0x20/0x20<br />
[ 97.400904] ? tracing_reset_all_online_cpus+0x15/0x90<br />
[ 97.402304] ? kprobe_trace_self_tests_init+0x3f1/0x480<br />
[ 97.403773] ? init_kprobe_trace+0x50/0x50<br />
[ 97.404972] do_one_initcall+0x112/0x240<br />
[ 97.406113] do_initcall_level+0x95/0xb0<br />
[ 97.407286] ? kernel_init+0x1a/0x1a0<br />
[ 97.408401] do_initcalls+0x3f/0x70<br />
[ 97.409452] kernel_init_freeable+0x16f/0x1e0<br />
[ 97.410662] ? rest_init+0x1f0/0x1f0<br />
[ 97.411738] kernel_init+0x1a/0x1a0<br />
[ 97.412788] ret_from_fork+0x39/0x50<br />
[ 97.413817] ? rest_init+0x1f0/0x1f0<br />
[ 97.414844] ret_from_fork_asm+0x11/0x20<br />
[ 97.416285] <br />
[ 97.417134] irq event stamp: 13437323<br />
[ 97.418376] hardirqs last enabled at (13437337): [] console_unlock+0x11c/0x150<br />
[ 97.421285] hardirqs last disabled at (13437370): [] console_unlock+0x101/0x150<br />
[ 97.423838] softirqs last enabled at (13437366): [] handle_softirqs+0x23f/0x2a0<br />
[ 97.426450] softirqs last disabled at (13437393): [] __irq_exit_rcu+0x66/0xd0<br />
[ 97.428850] ---[ end trace 0000000000000000 ]---<br />
<br />
And also, since we can not cleanup dynamic_event file, ftracetest are<br />
failed too.<br />
<br />
To avoid these issues, build these tests only as modules.
Severity CVSS v4.0: Pending analysis
Last modification:
12/07/2024