CVE-2023-54113
Spinlock Deadlock Vulnerability in Linux Kernel RCU Component
Publication date: 2025-12-24
Last updated on: 2025-12-24
Assigner: kernel.org
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| linux | linux_kernel | 6.5.0-rc4-rt2-yocto-preempt-rt |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-UNKNOWN |
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?
This vulnerability in the Linux kernel involves a potential spinlock deadlock scenario when the call_rcu() function is invoked twice. Specifically, if rcu_head objects are not allocated from the slab allocator, the vmalloc_dump_obj() function is called, which requires holding the vmap_area_lock spinlock. Since call_rcu() can be called in interrupt context, this can lead to a deadlock. The issue also triggers lockdep warnings in the Preempt-RT kernel during rcutorture tests. The fix involves using a deadlock-safe, best-effort version of find_vm_area and printing a message if the pointer is a vmalloc pointer to avoid deadlocks while still providing debug information.
How can this vulnerability impact me? :
This vulnerability can cause the Linux kernel to deadlock due to spinlock contention when call_rcu() is invoked in certain contexts, potentially leading to system hangs or crashes. This can affect system stability and reliability, especially in real-time or interrupt-driven environments where call_rcu() is used. Such deadlocks can disrupt normal operation and may require system reboot or intervention.
How can this vulnerability be detected on my network or system? Can you suggest some commands?
This vulnerability can be detected by observing kernel logs for specific lockdep warnings and BUG messages related to spinlock deadlocks and invalid context calls, especially those triggered by the rcutorture test in Preempt-RT kernels. Monitoring kernel messages for lines similar to 'BUG: sleeping function called from invalid context' and spinlock deadlock traces involving vmap_area_lock and call_rcu() can indicate the presence of this issue. Using kernel debugging tools like dmesg or journalctl to check for these messages is recommended.
What immediate steps should I take to mitigate this vulnerability?
Immediate mitigation involves applying the patch that uses the deadlock-safe best-effort version of find_vm_area to avoid spinlock deadlocks. Until the patch is applied, avoid running workloads or tests (such as rcutorture) that trigger call_rcu() in interrupt context leading to this deadlock scenario. Monitoring and updating the Linux kernel to a version that includes this fix is essential.