Vulnerability Details CVE-2024-53160
In the Linux kernel, the following vulnerability has been resolved:
rcu/kvfree: Fix data-race in __mod_timer / kvfree_call_rcu
KCSAN reports a data race when access the krcp->monitor_work.timer.expires
variable in the schedule_delayed_monitor_work() function:
<snip>
BUG: KCSAN: data-race in __mod_timer / kvfree_call_rcu
read to 0xffff888237d1cce8 of 8 bytes by task 10149 on cpu 1:
schedule_delayed_monitor_work kernel/rcu/tree.c:3520 [inline]
kvfree_call_rcu+0x3b8/0x510 kernel/rcu/tree.c:3839
trie_update_elem+0x47c/0x620 kernel/bpf/lpm_trie.c:441
bpf_map_update_value+0x324/0x350 kernel/bpf/syscall.c:203
generic_map_update_batch+0x401/0x520 kernel/bpf/syscall.c:1849
bpf_map_do_batch+0x28c/0x3f0 kernel/bpf/syscall.c:5143
__sys_bpf+0x2e5/0x7a0
__do_sys_bpf kernel/bpf/syscall.c:5741 [inline]
__se_sys_bpf kernel/bpf/syscall.c:5739 [inline]
__x64_sys_bpf+0x43/0x50 kernel/bpf/syscall.c:5739
x64_sys_call+0x2625/0x2d60 arch/x86/include/generated/asm/syscalls_64.h:322
do_syscall_x64 arch/x86/entry/common.c:52 [inline]
do_syscall_64+0xc9/0x1c0 arch/x86/entry/common.c:83
entry_SYSCALL_64_after_hwframe+0x77/0x7f
write to 0xffff888237d1cce8 of 8 bytes by task 56 on cpu 0:
__mod_timer+0x578/0x7f0 kernel/time/timer.c:1173
add_timer_global+0x51/0x70 kernel/time/timer.c:1330
__queue_delayed_work+0x127/0x1a0 kernel/workqueue.c:2523
queue_delayed_work_on+0xdf/0x190 kernel/workqueue.c:2552
queue_delayed_work include/linux/workqueue.h:677 [inline]
schedule_delayed_monitor_work kernel/rcu/tree.c:3525 [inline]
kfree_rcu_monitor+0x5e8/0x660 kernel/rcu/tree.c:3643
process_one_work kernel/workqueue.c:3229 [inline]
process_scheduled_works+0x483/0x9a0 kernel/workqueue.c:3310
worker_thread+0x51d/0x6f0 kernel/workqueue.c:3391
kthread+0x1d1/0x210 kernel/kthread.c:389
ret_from_fork+0x4b/0x60 arch/x86/kernel/process.c:147
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
Reported by Kernel Concurrency Sanitizer on:
CPU: 0 UID: 0 PID: 56 Comm: kworker/u8:4 Not tainted 6.12.0-rc2-syzkaller-00050-g5b7c893ed5ed #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
Workqueue: events_unbound kfree_rcu_monitor
<snip>
kfree_rcu_monitor() rearms the work if a "krcp" has to be still
offloaded and this is done without holding krcp->lock, whereas
the kvfree_call_rcu() holds it.
Fix it by acquiring the "krcp->lock" for kfree_rcu_monitor() so
both functions do not race anymore.
Exploit prediction scoring system (EPSS) score
EPSS Score 0.0
EPSS Ranking 7.0%
CVSS Severity
CVSS v3 Score 4.7
Products affected by CVE-2024-53160
-
cpe:2.3:o:linux:linux_kernel:6.10
-
cpe:2.3:o:linux:linux_kernel:6.10.0
-
cpe:2.3:o:linux:linux_kernel:6.10.1
-
cpe:2.3:o:linux:linux_kernel:6.10.10
-
cpe:2.3:o:linux:linux_kernel:6.10.11
-
cpe:2.3:o:linux:linux_kernel:6.10.12
-
cpe:2.3:o:linux:linux_kernel:6.10.13
-
cpe:2.3:o:linux:linux_kernel:6.10.14
-
cpe:2.3:o:linux:linux_kernel:6.10.2
-
cpe:2.3:o:linux:linux_kernel:6.10.3
-
cpe:2.3:o:linux:linux_kernel:6.10.4
-
cpe:2.3:o:linux:linux_kernel:6.10.5
-
cpe:2.3:o:linux:linux_kernel:6.10.6
-
cpe:2.3:o:linux:linux_kernel:6.10.7
-
cpe:2.3:o:linux:linux_kernel:6.10.8
-
cpe:2.3:o:linux:linux_kernel:6.10.9
-
cpe:2.3:o:linux:linux_kernel:6.11
-
cpe:2.3:o:linux:linux_kernel:6.11.1
-
cpe:2.3:o:linux:linux_kernel:6.11.10
-
cpe:2.3:o:linux:linux_kernel:6.11.2
-
cpe:2.3:o:linux:linux_kernel:6.11.3
-
cpe:2.3:o:linux:linux_kernel:6.11.4
-
cpe:2.3:o:linux:linux_kernel:6.11.5
-
cpe:2.3:o:linux:linux_kernel:6.11.6
-
cpe:2.3:o:linux:linux_kernel:6.11.7
-
cpe:2.3:o:linux:linux_kernel:6.11.8
-
cpe:2.3:o:linux:linux_kernel:6.11.9
-
cpe:2.3:o:linux:linux_kernel:6.12
-
cpe:2.3:o:linux:linux_kernel:6.12.1
-
cpe:2.3:o:linux:linux_kernel:6.3
-
cpe:2.3:o:linux:linux_kernel:6.3.1
-
cpe:2.3:o:linux:linux_kernel:6.3.10
-
cpe:2.3:o:linux:linux_kernel:6.3.11
-
cpe:2.3:o:linux:linux_kernel:6.3.12
-
cpe:2.3:o:linux:linux_kernel:6.3.13
-
cpe:2.3:o:linux:linux_kernel:6.3.2
-
cpe:2.3:o:linux:linux_kernel:6.3.3
-
cpe:2.3:o:linux:linux_kernel:6.3.4
-
cpe:2.3:o:linux:linux_kernel:6.3.5
-
cpe:2.3:o:linux:linux_kernel:6.3.6
-
cpe:2.3:o:linux:linux_kernel:6.3.7
-
cpe:2.3:o:linux:linux_kernel:6.3.8
-
cpe:2.3:o:linux:linux_kernel:6.3.9
-
cpe:2.3:o:linux:linux_kernel:6.4
-
cpe:2.3:o:linux:linux_kernel:6.4.1
-
cpe:2.3:o:linux:linux_kernel:6.4.10
-
cpe:2.3:o:linux:linux_kernel:6.4.11
-
cpe:2.3:o:linux:linux_kernel:6.4.12
-
cpe:2.3:o:linux:linux_kernel:6.4.13
-
cpe:2.3:o:linux:linux_kernel:6.4.14
-
cpe:2.3:o:linux:linux_kernel:6.4.15
-
cpe:2.3:o:linux:linux_kernel:6.4.16
-
cpe:2.3:o:linux:linux_kernel:6.4.2
-
cpe:2.3:o:linux:linux_kernel:6.4.3
-
cpe:2.3:o:linux:linux_kernel:6.4.4
-
cpe:2.3:o:linux:linux_kernel:6.4.5
-
cpe:2.3:o:linux:linux_kernel:6.4.6
-
cpe:2.3:o:linux:linux_kernel:6.4.7
-
cpe:2.3:o:linux:linux_kernel:6.4.8
-
cpe:2.3:o:linux:linux_kernel:6.4.9
-
cpe:2.3:o:linux:linux_kernel:6.5
-
cpe:2.3:o:linux:linux_kernel:6.5.1
-
cpe:2.3:o:linux:linux_kernel:6.5.10
-
cpe:2.3:o:linux:linux_kernel:6.5.11
-
cpe:2.3:o:linux:linux_kernel:6.5.12
-
cpe:2.3:o:linux:linux_kernel:6.5.13
-
cpe:2.3:o:linux:linux_kernel:6.5.2
-
cpe:2.3:o:linux:linux_kernel:6.5.3
-
cpe:2.3:o:linux:linux_kernel:6.5.4
-
cpe:2.3:o:linux:linux_kernel:6.5.5
-
cpe:2.3:o:linux:linux_kernel:6.5.6
-
cpe:2.3:o:linux:linux_kernel:6.5.7
-
cpe:2.3:o:linux:linux_kernel:6.5.8
-
cpe:2.3:o:linux:linux_kernel:6.5.9
-
cpe:2.3:o:linux:linux_kernel:6.6
-
cpe:2.3:o:linux:linux_kernel:6.6.1
-
cpe:2.3:o:linux:linux_kernel:6.6.10
-
cpe:2.3:o:linux:linux_kernel:6.6.11
-
cpe:2.3:o:linux:linux_kernel:6.6.12
-
cpe:2.3:o:linux:linux_kernel:6.6.13
-
cpe:2.3:o:linux:linux_kernel:6.6.14
-
cpe:2.3:o:linux:linux_kernel:6.6.15
-
cpe:2.3:o:linux:linux_kernel:6.6.16
-
cpe:2.3:o:linux:linux_kernel:6.6.17
-
cpe:2.3:o:linux:linux_kernel:6.6.18
-
cpe:2.3:o:linux:linux_kernel:6.6.19
-
cpe:2.3:o:linux:linux_kernel:6.6.2
-
cpe:2.3:o:linux:linux_kernel:6.6.20
-
cpe:2.3:o:linux:linux_kernel:6.6.21
-
cpe:2.3:o:linux:linux_kernel:6.6.22
-
cpe:2.3:o:linux:linux_kernel:6.6.23
-
cpe:2.3:o:linux:linux_kernel:6.6.24
-
cpe:2.3:o:linux:linux_kernel:6.6.25
-
cpe:2.3:o:linux:linux_kernel:6.6.26
-
cpe:2.3:o:linux:linux_kernel:6.6.27
-
cpe:2.3:o:linux:linux_kernel:6.6.28
-
cpe:2.3:o:linux:linux_kernel:6.6.29
-
cpe:2.3:o:linux:linux_kernel:6.6.3
-
cpe:2.3:o:linux:linux_kernel:6.6.30
-
cpe:2.3:o:linux:linux_kernel:6.6.31
-
cpe:2.3:o:linux:linux_kernel:6.6.32
-
cpe:2.3:o:linux:linux_kernel:6.6.33
-
cpe:2.3:o:linux:linux_kernel:6.6.34
-
cpe:2.3:o:linux:linux_kernel:6.6.35
-
cpe:2.3:o:linux:linux_kernel:6.6.36
-
cpe:2.3:o:linux:linux_kernel:6.6.37
-
cpe:2.3:o:linux:linux_kernel:6.6.38
-
cpe:2.3:o:linux:linux_kernel:6.6.39
-
cpe:2.3:o:linux:linux_kernel:6.6.4
-
cpe:2.3:o:linux:linux_kernel:6.6.40
-
cpe:2.3:o:linux:linux_kernel:6.6.41
-
cpe:2.3:o:linux:linux_kernel:6.6.42
-
cpe:2.3:o:linux:linux_kernel:6.6.43
-
cpe:2.3:o:linux:linux_kernel:6.6.44
-
cpe:2.3:o:linux:linux_kernel:6.6.45
-
cpe:2.3:o:linux:linux_kernel:6.6.46
-
cpe:2.3:o:linux:linux_kernel:6.6.47
-
cpe:2.3:o:linux:linux_kernel:6.6.48
-
cpe:2.3:o:linux:linux_kernel:6.6.49
-
cpe:2.3:o:linux:linux_kernel:6.6.5
-
cpe:2.3:o:linux:linux_kernel:6.6.50
-
cpe:2.3:o:linux:linux_kernel:6.6.51
-
cpe:2.3:o:linux:linux_kernel:6.6.52
-
cpe:2.3:o:linux:linux_kernel:6.6.53
-
cpe:2.3:o:linux:linux_kernel:6.6.54
-
cpe:2.3:o:linux:linux_kernel:6.6.55
-
cpe:2.3:o:linux:linux_kernel:6.6.56
-
cpe:2.3:o:linux:linux_kernel:6.6.57
-
cpe:2.3:o:linux:linux_kernel:6.6.58
-
cpe:2.3:o:linux:linux_kernel:6.6.59
-
cpe:2.3:o:linux:linux_kernel:6.6.6
-
cpe:2.3:o:linux:linux_kernel:6.6.60
-
cpe:2.3:o:linux:linux_kernel:6.6.61
-
cpe:2.3:o:linux:linux_kernel:6.6.62
-
cpe:2.3:o:linux:linux_kernel:6.6.63
-
cpe:2.3:o:linux:linux_kernel:6.6.7
-
cpe:2.3:o:linux:linux_kernel:6.6.8
-
cpe:2.3:o:linux:linux_kernel:6.6.9
-
cpe:2.3:o:linux:linux_kernel:6.7
-
cpe:2.3:o:linux:linux_kernel:6.7.1
-
cpe:2.3:o:linux:linux_kernel:6.7.10
-
cpe:2.3:o:linux:linux_kernel:6.7.11
-
cpe:2.3:o:linux:linux_kernel:6.7.12
-
cpe:2.3:o:linux:linux_kernel:6.7.2
-
cpe:2.3:o:linux:linux_kernel:6.7.3
-
cpe:2.3:o:linux:linux_kernel:6.7.4
-
cpe:2.3:o:linux:linux_kernel:6.7.5
-
cpe:2.3:o:linux:linux_kernel:6.7.6
-
cpe:2.3:o:linux:linux_kernel:6.7.7
-
cpe:2.3:o:linux:linux_kernel:6.7.8
-
cpe:2.3:o:linux:linux_kernel:6.7.9
-
cpe:2.3:o:linux:linux_kernel:6.8
-
cpe:2.3:o:linux:linux_kernel:6.8.1
-
cpe:2.3:o:linux:linux_kernel:6.8.10
-
cpe:2.3:o:linux:linux_kernel:6.8.11
-
cpe:2.3:o:linux:linux_kernel:6.8.12
-
cpe:2.3:o:linux:linux_kernel:6.8.2
-
cpe:2.3:o:linux:linux_kernel:6.8.3
-
cpe:2.3:o:linux:linux_kernel:6.8.4
-
cpe:2.3:o:linux:linux_kernel:6.8.5
-
cpe:2.3:o:linux:linux_kernel:6.8.6
-
cpe:2.3:o:linux:linux_kernel:6.8.7
-
cpe:2.3:o:linux:linux_kernel:6.8.8
-
cpe:2.3:o:linux:linux_kernel:6.8.9
-
cpe:2.3:o:linux:linux_kernel:6.9
-
cpe:2.3:o:linux:linux_kernel:6.9.1
-
cpe:2.3:o:linux:linux_kernel:6.9.10
-
cpe:2.3:o:linux:linux_kernel:6.9.11
-
cpe:2.3:o:linux:linux_kernel:6.9.12
-
cpe:2.3:o:linux:linux_kernel:6.9.2
-
cpe:2.3:o:linux:linux_kernel:6.9.3
-
cpe:2.3:o:linux:linux_kernel:6.9.4
-
cpe:2.3:o:linux:linux_kernel:6.9.5
-
cpe:2.3:o:linux:linux_kernel:6.9.6
-
cpe:2.3:o:linux:linux_kernel:6.9.7
-
cpe:2.3:o:linux:linux_kernel:6.9.8
-
cpe:2.3:o:linux:linux_kernel:6.9.9