HIGH 7.5

CVE-2026-52946: Linux Kernel SOFTIRQ-Unsafe Lock Order Denial of Service

A deadlock vulnerability exists in the Linux kernel's file access signaling code. When a process group receives a signal via FASYNC (asynchronous I/O notification), the kernel can deadlock under specific conditions. The issue arises because the code uses a read lock on the task list while running in softirq context (a special kernel interrupt handler), but a writer somewhere else may be waiting to acquire that same lock. This creates a circular wait: the softirq handler is blocked trying to read-lock a resource, while a writer is spinning and preventing new readers. The vulnerability can be triggered remotely via TCP URG (urgent) packets, making it a potential denial-of-service vector without requiring authentication or user interaction.

Source data · NVD / CISA · public domain

CVSS
3.1 · 7.5 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weaknesses (CWE)
CWE-667
Affected products
6 configuration(s)
Published / Modified
2026-06-24 / 2026-07-14

NVD description (verbatim)

In the Linux kernel, the following vulnerability has been resolved: fs/fcntl: fix SOFTIRQ-unsafe lock order in fasync signaling A SOFTIRQ-safe to SOFTIRQ-unsafe lock order deadlock can occur in send_sigio() and send_sigurg() when a process group receives a signal. When FASYNC is configured for a process group (PIDTYPE_PGID), both functions use read_lock(&tasklist_lock) to traverse the task list. However, they are frequently called from softirq context: - send_sigio() via input_inject_event -> kill_fasync - send_sigurg() via tcp_check_urg -> sk_send_sigurg (NET_RX_SOFTIRQ) The deadlock is caused by the rwlock writer fairness mechanism: 1. CPU 0 (process context) holds read_lock(&tasklist_lock) in do_wait(). 2. CPU 1 (process context) attempts write_lock(&tasklist_lock) in fork() or exit() and spins, which blocks all new readers. 3. CPU 0 is interrupted by a softirq (e.g., TCP URG packet reception). 4. The softirq calls send_sigurg() and attempts to acquire read_lock(&tasklist_lock), deadlocking because CPU 1 is waiting. Since PID hashing and do_each_pid_task() traversals are already RCU-protected, the read_lock on tasklist_lock is no longer strictly required for safe traversal. Fix this by replacing tasklist_lock with rcu_read_lock(), aligning the process group signaling path with the single-PID path. This also mitigates a potential remote denial of service vector via TCP URG packets. Lockdep splat: ===================================================== WARNING: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected [...] Chain exists of: &dev->event_lock --> &f_owner->lock --> tasklist_lock Possible interrupt unsafe locking scenario: CPU0 CPU1 ---- ---- lock(tasklist_lock); local_irq_disable(); lock(&dev->event_lock); lock(&f_owner->lock); <Interrupt> lock(&dev->event_lock); *** DEADLOCK ***

9 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

The vulnerability is a lock-ordering deadlock in fs/fcntl.c affecting send_sigio() and send_sigurg() functions. Both functions call read_lock(&tasklist_lock) to traverse process groups when delivering FASYNC signals. The problem occurs because these functions are frequently invoked from softirq context—send_sigio() via input_inject_event and send_sigurg() via the TCP receive path (NET_RX_SOFTIRQ). The rwlock writer fairness mechanism creates the deadlock scenario: when a writer (fork/exit path) acquires write_lock(&tasklist_lock), it blocks all new readers. A softirq on a different CPU attempting to read-lock will deadlock because the writer is spinning. The fix replaces tasklist_lock with rcu_read_lock(), which is compatible with softirq context since RCU read-side critical sections are safe from interrupt handlers. This aligns process-group signaling with the existing single-PID signaling path, which already uses RCU protection for PID hashing and task traversal.

Business impact

A remotely-triggered denial-of-service condition affecting Linux kernel stability. An attacker can send specially crafted TCP packets with the URG flag set, potentially causing kernel deadlocks on systems where FASYNC signal delivery is active. While not a confidentiality or integrity breach, successful exploitation results in system hang or crash, impacting availability of services running on affected kernels. This is particularly relevant for network-facing systems, embedded devices, and virtualized environments relying on Linux. Organizations running affected kernel versions should prioritize mitigation to prevent unplanned downtime.

Affected systems

All Linux kernel versions that implement the vulnerable fasync signaling logic. The vulnerability affects the core kernel; no specific vendor-differentiated products are named in the advisory. Any system running a Linux kernel without the RCU-based fix is at risk, including cloud instances, servers, containers, and embedded systems. Organizations should verify kernel version against vendor patches (e.g., Ubuntu, Red Hat, Debian, SUSE) and their respective vulnerability advisories.

Exploitability

Exploitability is moderate to high. The vulnerability requires network access (CVSS AV:N) and can be triggered without authentication or user interaction. An attacker must craft TCP packets with URG flags or inject input events to reach the vulnerable code path. However, successful exploitation depends on timing—the deadlock requires concurrent operations (active reader holding tasklist_lock while a writer attempts to acquire it). Proof-of-concept exploitation is feasible but non-trivial, explaining why this is not yet listed in CISA's KEV catalog. The vulnerability is not known to be actively exploited in the wild based on current threat intelligence.

Remediation

Apply kernel patches that replace tasklist_lock with rcu_read_lock() in the fasync signaling path. Consult your Linux distribution's security advisory and patch availability (Ubuntu, Red Hat, Debian, SUSE, etc.). Kernel maintainers must backport the fix to stable branches. System administrators should plan kernel updates as part of regular maintenance cycles, prioritizing systems that are internet-facing or run latency-sensitive applications where denial-of-service has high impact.

Patch guidance

Patches are distribution-specific. Check the official security advisories from your Linux vendor (kernel.org, Ubuntu Security Notices, Red Hat Security Advisories, etc.) for the patched kernel version. The upstream fix involves modifying fs/fcntl.c to use rcu_read_lock() instead of read_lock(&tasklist_lock) in send_sigio() and send_sigurg(). After patching, reboot to activate the new kernel. If zero-downtime deployment is required, some environments (e.g., live kernel patching with kpatch/kGraft) may support in-place patching; verify support with your vendor.

Detection guidance

Monitor system logs for lockdep warnings or softirq timeout messages, which may indicate lock-ordering issues. Kernel hardening tools like lockdep (if enabled) will report the deadlock chain. Check for unusual increases in system hangs, CPU stalls, or unresponsive services. In production, network-level detection is difficult—focus on ensuring timely patching and validation in test environments. Consider kernel tracing tools (SystemTap, perf) in non-production labs to capture the deadlock signature if investigating suspected exploitation.

Why prioritize this

CVSS 7.5 (HIGH) with network-accessible denial-of-service impact warrants priority remediation, especially for critical infrastructure and customer-facing services. Although not in the KEV catalog, the vulnerability combines ease of trigger (network packets) with high availability impact. Organizations should patch within their standard maintenance windows but should not deprioritize in favor of lower-scoring vulns affecting the same systems. Virtualized environments and cloud workloads may face additional urgency if shared hosts are at risk.

Risk score, explained

CVSS 3.1 score of 7.5 reflects HIGH severity: the vulnerability requires no privileges or user interaction (PR:N, UI:N) and is network-accessible (AV:N). The attack vector is straightforward (TCP URG packets or input events). However, the impact is limited to availability (A:H) with no confidentiality or integrity loss (C:N, I:N), capping the score below critical. The complexity is low (AC:L) since the deadlock is inherent to the code logic rather than requiring a complex exploitation sequence. The overall assessment emphasizes the availability threat while acknowledging the absence of data exposure risk.

Frequently asked questions

Can this vulnerability lead to data theft or corruption?

No. The vulnerability is confined to denial-of-service through kernel deadlock. There is no mechanism to read, modify, or exfiltrate data. Once patched, the system integrity is not compromised.

How do I know if my Linux system is vulnerable?

Check your kernel version against your distribution's security advisory (Ubuntu USN, Red Hat RHSA, etc.). You can check your running kernel with 'uname -r'. Most distributions have published patch versions; verify your version is at or above the patched release. If unsure, contact your vendor's support.

Is this being actively exploited?

Not currently listed in CISA's Known Exploited Vulnerabilities catalog, indicating no widespread active exploitation as of the latest intelligence. However, the attack surface (remote TCP packets) means proof-of-concept code could be developed; treat it as a credible threat requiring timely patching.

Can I work around this vulnerability without patching?

Full remediation requires a kernel patch. Workarounds such as disabling FASYNC or limiting network access may reduce attack surface in specific environments, but these are not reliable substitutes. Patching is the recommended solution.

This analysis is provided for informational purposes and based on the available vulnerability data as of the publication date. SEC.co does not warrant the completeness or accuracy of patch availability across all Linux distributions. Organizations must verify patch status with their specific vendor and apply patches according to their operational requirements. Exploit details are not provided in this advisory; such information may become available as the vulnerability matures. Consult official vendor advisories and security bulletins for canonical information on affected versions and remediation timelines. Source: NVD (public-domain), retrieved 2026-07-30. Analysis generated by SEC.co (claude-haiku-4-5).