CVE-2026-23419 Overview
CVE-2026-23419 is a circular locking dependency vulnerability in the Linux kernel's Reliable Datagram Sockets (RDS) over TCP transport. The flaw resides in the rds_tcp_tune() function, where sk_net_refcnt_upgrade() is invoked while the socket lock is held. Because sk_net_refcnt_upgrade() performs memory allocation through get_net_track() and ref_tracker_alloc(), it can re-enter fs_reclaim, creating a lock ordering inversion detected by syzbot. Local users on affected systems can trigger conditions that may lead to deadlock and host availability loss [CWE-667].
Critical Impact
Local triggering of a circular locking dependency in the RDS-TCP path can produce kernel deadlocks and a denial-of-service condition on affected Linux hosts.
Affected Products
- Linux kernel 5.18 (release)
- Linux kernel 7.0 release candidates rc1 through rc7
- Linux kernel branches incorporating the vulnerable rds_tcp_tune() lock ordering
Discovery Timeline
- 2026-04-03 - CVE-2026-23419 published to NVD
- 2026-04-27 - Last updated in NVD database
Technical Details for CVE-2026-23419
Vulnerability Analysis
The vulnerability exists in rds_tcp_tune() within the kernel's net/rds subsystem. The function holds the socket lock k-sk_lock-AF_INET6 while calling sk_net_refcnt_upgrade(). That helper performs memory allocations via get_net_track() and ref_tracker_alloc(), which can enter the fs_reclaim path. The combination produces a lock acquisition order that conflicts with paths taking fs_reclaim first, satisfying the kernel lockdep validator's criteria for a circular dependency warning.
Under memory pressure or contended workloads, the conflicting lock ordering can transition from a lockdep warning into an actual deadlock. Affected kernel threads, including the kworker context observed by syzbot, become stuck. The condition impacts host availability without exposing confidentiality or integrity, consistent with the local attack vector and high-availability impact reflected in the advisory.
Root Cause
The root cause is improper lock ordering. sk_net_refcnt_upgrade() allocates memory while the socket lock is held, allowing the slab allocator to invoke fs_reclaim. The fields modified by sk_net_refcnt_upgrade(), namely sk_net_refcnt and ns_tracker, are not accessed by concurrent paths at this point, so the lock is not required to protect them.
Attack Vector
Exploitation requires local code execution with the ability to create RDS sockets and trigger the tuning path. The vulnerability has no remote network reach on its own. A local low-privileged user repeatedly opening RDS-TCP sockets under memory pressure can provoke the deadlock condition and degrade kernel responsiveness.
No public proof-of-concept exploit is available, and the issue has not been reported as exploited in the wild. See the kernel commits referenced in Kernel Git Commit 8babb271 for the corrective patch.
Detection Methods for CVE-2026-23419
Indicators of Compromise
- Kernel log entries containing WARNING: possible circular locking dependency detected referencing rds_tcp_tune and fs_reclaim.
- kworker threads stalled while holding k-sk_lock-AF_INET6 and attempting __kmalloc_cache_noprof.
- Unexpected hangs or soft lockups on hosts that load the rds_tcp kernel module.
Detection Strategies
- Monitor dmesg and /var/log/kern.log for lockdep warnings naming rds_tcp_tune or sk_net_refcnt_upgrade.
- Audit installed kernel versions against the fixed commits listed in the kernel.org advisories.
- Inventory hosts where the rds and rds_tcp modules are loaded, as systems without these modules are not exposed.
Monitoring Recommendations
- Forward kernel logs to a centralized logging or SIEM platform and alert on lockdep circular dependency warnings.
- Track kernel package versions across the fleet to confirm patched builds are deployed.
- Restrict or blacklist the rds module on hosts that do not require RDS connectivity to reduce attack surface.
How to Mitigate CVE-2026-23419
Immediate Actions Required
- Apply the upstream kernel fix that moves sk_net_refcnt_upgrade() outside the socket lock critical section in rds_tcp_tune().
- Update to a Linux distribution kernel package that incorporates the referenced stable commits.
- Blacklist the rds and rds_tcp modules on systems that do not use Reliable Datagram Sockets.
Patch Information
The Linux kernel maintainers released the fix across multiple stable branches. Refer to Kernel Git Commit 026bbaee, Kernel Git Commit 6a877ece, Kernel Git Commit 6ce948fa, Kernel Git Commit 8519e688, and Kernel Git Commit 8babb271 for the authoritative patches.
Workarounds
- Prevent loading of the affected module by adding install rds /bin/true to a file in /etc/modprobe.d/.
- Restrict creation of AF_RDS sockets through seccomp profiles or container security policies where feasible.
- Limit local account access on multi-tenant hosts until the patched kernel is deployed.
# Configuration example: disable the vulnerable RDS modules until patched
echo 'install rds /bin/true' | sudo tee /etc/modprobe.d/disable-rds.conf
echo 'install rds_tcp /bin/true' | sudo tee -a /etc/modprobe.d/disable-rds.conf
sudo rmmod rds_tcp rds 2>/dev/null || true
lsmod | grep -E '^rds'
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


