CVE-2026-52977: Linux Kernel Futex Race Condition Causing System Lockup
A race condition in the Linux kernel's futex (fast userspace mutex) implementation can cause a system lockup when one task times out or receives a signal while waiting to be requeued to another futex. The issue arises because a departing task cannot remove itself from the queue quickly enough when a higher-priority task is holding the necessary locks, leading to deadlock or busy-loop scenarios that freeze the system. The fix involves properly removing waiters from the queue when requeue operations fail, allowing other tasks to progress and preventing the lockup condition.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 5.5 MEDIUM · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
- Weaknesses (CWE)
- —
- Affected products
- 2 configuration(s)
- Published / Modified
- 2026-06-24 / 2026-07-14
NVD description (verbatim)
In the Linux kernel, the following vulnerability has been resolved: futex: Prevent lockup in requeue-PI during signal/ timeout wakeup During wait-requeue-pi (task A) and requeue-PI (task B) the following race can happen: Task A Task B futex_wait_requeue_pi() futex_setup_timer() futex_do_wait() futex_requeue() CLASS(hb, hb1)(&key1); CLASS(hb, hb2)(&key2); *timeout* futex_requeue_pi_wakeup_sync() requeue_state = Q_REQUEUE_PI_IGNORE *blocks on hb->lock* futex_proxy_trylock_atomic() futex_requeue_pi_prepare() Q_REQUEUE_PI_IGNORE => -EAGAIN double_unlock_hb(hb1, hb2) *retry* Task B acquires both hb locks and attempts to acquire the PI-lock of the top most waiter (task B). Task A is leaving early due to a signal/ timeout and started removing itself from the queue. It updates its requeue_state but can not remove it from the list because this requires the hb lock which is owned by task B. Usually task A is able to swoop the lock after task B unlocked it. However if task B is of higher priority then task A may not be able to wake up in time and acquire the lock before task B gets it again. Especially on a UP system where A is never scheduled. As a result task A blocks on the lock and task B busy loops, trying to make progress but live locks the system instead. Tragic. This can be fixed by removing the top most waiter from the list in this case. This allows task B to grab the next top waiter (if any) in the next iteration and make progress. Remove the top most waiter if futex_requeue_pi_prepare() fails. Let the waiter conditionally remove itself from the list in handle_early_requeue_pi_wakeup().
6 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
CVE-2026-52977 addresses a synchronization race in the futex subsystem occurring during wait-requeue-pi operations. When Task A (waiting with a timeout) and Task B (performing requeue operations) interact, Task A's signal/timeout wakeup can trigger a state where it marks itself for early departure via REQUEUE_PI_IGNORE but cannot acquire the hash bucket lock held by Task B to remove itself from the queue. If Task B has higher priority or runs on a uniprocessor system, it may re-acquire the lock before Task A wakes, causing Task A to block indefinitely while Task B busy-loops attempting futex_requeue_pi_prepare(), effectively creating a livelock. The resolution requires removing the top-most waiter from the list when futex_requeue_pi_prepare() fails, and allowing conditional self-removal in handle_early_requeue_pi_wakeup().
Business impact
This vulnerability can cause complete system unresponsiveness on affected Linux systems, particularly impacting production environments relying on futex-based synchronization primitives. Services using condition variables, mutexes, or other higher-level synchronization mechanisms that depend on futexes are at risk of sudden, unexplained hangs. The impact is most severe on uniprocessor systems or when workloads involve mixed-priority threads, as these conditions maximize the probability of the race triggering. System administrators may experience mysterious service outages without obvious error messages, complicating diagnosis and remediation.
Affected systems
The Linux kernel across all versions containing the vulnerable futex requeue-PI code path is affected. This includes both 32-bit and 64-bit architectures. The vulnerability is most readily triggered on systems with single processors or low core counts, and in workloads that use futex-based synchronization with signal handlers or timers. Any Linux distribution and kernel version prior to the fix is potentially vulnerable.
Exploitability
Exploitation requires local system access and the ability to spawn threads or processes that exercise futex wait-requeue-pi operations with concurrent signal delivery or timeouts. The race condition is probabilistic and more reliably triggered on uniprocessor systems or with careful timing manipulation. No special privileges are required beyond normal user-level thread creation and signal handling. While not easily weaponized for remote attack, local users can reliably cause denial of service by forcing the system lockup condition.
Remediation
Apply the Linux kernel patch that modifies futex requeue-PI handling to remove top-most waiters when futex_requeue_pi_prepare() fails, and implements conditional self-removal in handle_early_requeue_pi_wakeup(). Verify the fix by checking kernel release notes or commit history for the specific futex subsystem changes addressing this race condition. Reboot systems after patching to activate the corrected kernel code.
Patch guidance
Update to a Linux kernel version containing the fix for CVE-2026-52977. Verify against your distribution's security advisory and kernel changelog to confirm the specific version or commit that resolves this issue. Most major distributions (Red Hat, Ubuntu, Debian, SUSE, etc.) will provide patched kernel packages; use your standard kernel update mechanism (e.g., apt, yum, zypper) to deploy the corrected version. Test in non-production environments before rolling out to critical systems, as kernel updates require reboots. Prioritize patching on uniprocessor systems and those running multi-threaded workloads with signal handling.
Detection guidance
Affected systems may exhibit symptoms of kernel hangs, lockups, or unresponsive processes without clear error messages in system logs. Monitor system logs (dmesg, /var/log/kern.log) for signs of RCU stall warnings, soft lockup warnings, or watchdog timeouts, which often precede or accompany futex-related deadlocks. Use kernel tracing tools (ftrace, perf) to observe futex operations and thread state if reproducing the issue in a lab environment. In production, track process states via ps/top for unexplained 'D' (uninterruptible sleep) states, which may indicate futex deadlock. Correlation with signal delivery or timeout events in application logs can help identify affected workloads.
Why prioritize this
This vulnerability merits priority remediation because it causes denial of service through system lockup, affecting availability—a critical operational concern. Although the attack surface is limited to local access, the impact (complete system freeze) is severe and can disable critical infrastructure. Uniprocessor systems and those running legacy or specialized workloads relying on futex-based libraries (pthreads, boost::thread, etc.) should be prioritized. Organizations running containerized or virtualized environments on single-core instances face elevated risk.
Risk score, explained
The CVSS 3.1 score of 5.5 (MEDIUM, AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H) reflects that the vulnerability requires local access and low privileges, but delivers high availability impact via denial of service. The attack complexity is low—once the conditions align (timeout + higher-priority requeue task), the race is likely to manifest. No confidentiality or integrity impact occurs; the harm is purely denial of service. The score appropriately downgrades from CRITICAL due to the local-access requirement but emphasizes the severity of the availability impact.
Frequently asked questions
How likely is this race condition to trigger in my environment?
The race is most readily triggered on uniprocessor systems or low-core-count machines, especially with workloads that combine signal delivery, timeouts, and futex-based synchronization. Multi-core systems with ample scheduling opportunities reduce the probability significantly, though it is not impossible. High-priority requeue tasks contending with lower-priority waiters increase the likelihood. If your systems are multi-core with balanced thread priorities, your risk is lower; conversely, embedded, IoT, or legacy single-core deployments face elevated exposure.
Will patching require downtime?
Yes. Linux kernel security updates almost always require a system reboot to activate. Plan maintenance windows accordingly, especially for production systems. On systems supporting live patching or livepatch kernels, you may be able to defer the reboot, but verify your distribution's support. Always test the patched kernel in a staging environment first to ensure compatibility with your workloads and hardware.
Can I mitigate this without patching?
True mitigation is limited. You may reduce exposure by avoiding uniprocessor deployments, disabling signal delivery to futex-waiting threads where possible, or reducing use of futex-based synchronization primitives in favor of higher-level abstractions that are less susceptible to race conditions. However, these are workarounds, not fixes. Patching is the definitive remediation.
Does this affect only kernel futex syscalls, or does it impact user-space libraries?
The vulnerability exists in the kernel futex implementation, but it affects any user-space library or application that uses futex-based synchronization—including pthreads (pthread_mutex, pthread_cond), std::mutex in C++, and any library wrapping futex syscalls. If your application uses threading and condition variables, it is potentially affected. Patching the kernel addresses the root cause for all affected user-space code.
This analysis is based on publicly disclosed CVE-2026-52977 information as of the publication date. Security conditions, patch availability, and vendor statements may change; consult your distribution's official security advisory for the most current guidance. This document does not constitute professional security advice. Organizations should engage qualified security personnel to assess risk within their specific environment and implement patches according to their change management and maintenance policies. Testing in non-production environments before deploying kernel updates is strongly recommended. Source: NVD (public-domain), retrieved 2026-07-30. Analysis generated by SEC.co (claude-haiku-4-5).
Affected vendors
Related vulnerabilities
- CVE-2025-71313MEDIUMLinux Kernel PCI Endpoint NULL Pointer Dereference
- CVE-2025-71314MEDIUMLinux Panthor GPU Driver Denial of Service via Cache Flush Timeout
- CVE-2025-71315MEDIUMLinux Kernel vkms DRM Vblank Timer Denial of Service
- CVE-2026-0268MEDIUMPrisma Access Agent Linux VPN Bypass Vulnerability
- CVE-2026-10004MEDIUMChrome UI Spoofing Vulnerability – Password Dialog Hijacking
- CVE-2026-10018MEDIUMInteger Overflow in Chrome ANGLE GPU Graphics Layer
- CVE-2026-10912MEDIUMChrome Extension Same-Origin Policy Bypass (CVSS 6.5)
- CVE-2026-10916MEDIUMChrome DevTools UXSS Vulnerability