KernelScan.io

HIGH

net/rds Connection State Race

CVE-2026-43226

CVSS 7.5 / 10.0 NVD

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

KernelScan AI5.5MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: net/rds: No shortcut out of RDS_CONN_ERROR RDS connections carry a state "rds_conn_path::cp_state" and transitions from one state to another and are conditional upon an expected state: "rds_conn_path_transition." There is one exception to this conditionality, which is "RDS_CONN_ERROR" that can be enforced by "rds_conn_path_drop" regardless of what state the condition is currently in. But as soon as a connection enters state "RDS_CONN_ERROR", the connection handling code expects it to go through the shutdown-path. The RDS/TCP multipath changes added a shortcut out of "RDS_CONN_ERROR" straight back to "RDS_CONN_CONNECTING" via "rds_tcp_accept_one_path" (e.g. after "rds_tcp_state_change"). A subsequent "rds_tcp_reset_callbacks" can then transition the state to "RDS_CONN_RESETTING" with a shutdown-worker queued. That'll trip up "rds_conn_init_shutdown", which was never adjusted to handle "RDS_CONN_RESETTING" and subsequently drops the connection with the dreaded "DR_INV_CONN_STATE", which leaves "RDS_SHUTDOWN_WORK_QUEUED" on forever. So we do two things here: a) Don't shortcut "RDS_CONN_ERROR", but take the longer path through the shutdown code. b) Add "RDS_CONN_RESETTING" to the expected states in "rds_conn_init_shutdown" so that we won't error out and get stuck, if we ever hit weird state transitions like this again."

02

Engine v0.2.0

Risk summary

Systems using RDS (Reliable Datagram Sockets) networking with TCP multipath are vulnerable to connection state machine corruption that can cause permanent resource leaks. This affects database clusters and high-performance computing environments that rely on RDS for inter-node communication, potentially leading to connection exhaustion and service degradation.

Affectednet/rds/connection.c (RDS networking)

Vulnerability analysis

The vulnerability stems from improper state machine handling in RDS connection management. The RDS/TCP multipath implementation added a shortcut that allows connections to transition directly from RDS_CONN_ERROR back to RDS_CONN_CONNECTING, bypassing the required shutdown path. This creates a race condition where a connection can reach RDS_CONN_RESETTING state while a shutdown worker is queued, but the shutdown handler doesn't expect this state and fails with DR_INV_CONN_STATE, leaving RDS_SHUTDOWN_WORK_QUEUED set permanently. The fix removes the improper shortcut and adds RDS_CONN_RESETTING to the expected states in the shutdown handler. This is locally exploitable by any process with sufficient privileges to create RDS sockets, typically requiring CAP_NET_ADMIN or similar networking capabilities.

03

BranchFixed inPatch commit
5.105.10.2529bcd7c00691a
5.155.15.202a179ac7be8f5
6.16.1.16519e384a7d00d
6.126.12.7581248b1eb3c5
6.186.18.16899ef00963ce
6.196.19.69ff599a9be78
6.66.6.128f0f729bdffb0
mainline7.0ad22d24be635