CVE-2026-98560: net/rds: size a connection's path set by the transport it ends up with
In the Linux kernel, the following vulnerability has been resolved:
net/rds: size a connection's path set by the transport it ends up with
rdsconncreate() computes npaths from the caller's transport before it decides whether a connection to one of the host's own addresses is to be handled by the loopback transport instead. That substitution is what an RDS/TCP socket sending to a local address gets, and after it the path init loop still runs for the TCP transport's RDSMPATHWORKERS paths and allocates an ordered workqueue for each, while rdsloopconnalloc() only ever provides transport data for path 0.
rdsconndestroy() sizes its teardown from ctrans, by then the loopback transport, so it visits path 0 only - and rdsconnpathdestroy() would skip the other paths anyway, since it returns before destroyworkqueue() for a path without transport data. kfree(cpath) then drops the last pointers to seven workqueues. That repeats for every such connection, on every netns teardown or module unload, and every distinct local destination address is a separate connection.
Recompute npaths once the transport is final, so that creation and destruction agree on the set of paths. The cpath array stays sized for the caller's transport; the unused entries are freed with it.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1
Event History
Frequently Asked Questions
Which systems are exposed to the workqueue leak?
Systems using RDS/TCP sockets to send to one of the host's own local addresses are affected. Each distinct local destination address creates a separate connection, so the leak can recur across multiple local destinations.
What does an attacker or triggering workload need to do?
The triggering condition is an RDS/TCP connection whose destination resolves to a local host address and is therefore handled by the loopback transport. Creating such connections causes workqueues for additional TCP paths to be allocated without corresponding teardown.
When does the leaked memory persist or become observable?
The leaked workqueues accumulate for each affected connection and are not destroyed during connection teardown. The issue repeats during network-namespace teardown or module unload, after which the path array is freed while pointers to the extra workqueues are lost.