CVE-2026-99166 json
net: rds: fix uninitialized trans dereference in CM event handler
published 2026-10-28 11 d ago modified 2026-10-30 9 d ago also EUVD-2026-111918
- cvss
- —
- not scored
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 7%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
net: rds: fix uninitialized trans dereference in CM event handler
rds_rdma_cm_event_handler_cmn() assigns trans only when the RDMA device is an InfiniBand CA (RDMA_NODE_IB_CA). On any other device type, e.g. an iWARP RNIC such as siw, trans stays uninitialized, but the event switch dereferences it: unconditionally in the RDMA_CM_EVENT_CONNECT_REQUEST case via trans->cm_handle_connect(), and (with a connection context) in the ROUTE_RESOLVED and ESTABLISHED cases.
An RDS listener on an iWARP device therefore crashes the kernel as soon as a connect request arrives: with CONFIG_INIT_STACK_ALL_ZERO the wild load becomes a NULL dereference at offset 0xa0 (&trans->cm_handle_connect) in the iw_cm_wq workqueue.
GCC masks the bug in default builds by folding the uninitialized load into &rds_ib_transport; Clang-built kernels take the real uninitialized path and oops.
The active side can land on a non-IB device too: the id that rds_ib_conn_path_connect() creates is not restricted to a node type, so rdma_resolve_addr() binds it to whichever device serves the local address, and an iWARP RNIC on the same netdev qualifies. The crash there is different: resolving a route on an iWARP id never fills in cm_id->route.path_rec, and the ROUTE_RESOLVED case writes path_rec[0].sl before it calls into the transport.
The iWARP transport was dropped long ago and IB is the only transport left, so make that explicit: initialize trans to &rds_ib_transport at declaration, drop the conditional assignment, reject a connect request that arrives on a non-IB device, and drop a connection whose address resolved to one instead of resolving a route on it. The rejection is limited to RDMA_CM_EVENT_CONNECT_REQUEST on purpose: a non-zero return from the handler makes rdma_cm destroy the id the event was delivered on, which is right for the request's freshly created id but would free a connection id that RDS still owns for any other event. On the active side the id stays ic->i_cm_id and the connection's shutdown destroys it, so that case returns 0.
[achender: reject only on RDMA_CM_EVENT_CONNECT_REQUEST instead of bailing out for every event on a non-IB device, so that rdma_cm does not destroy connection ids RDS still tracks; drop a connection whose address resolved to a non-IB device before a route is resolved on it; changelog adjusted]
Patch / fix
- Linux Linux 5.10.273, 5.15.224, 6.1.191, 6.6.161, 6.12.115, 6.18.59, 7.2.13, 7.3
- linux Debian 13 6.12.115-2
- linux Debian 14 7.2.13-1
debian advisories DEBIAN-CVE-2026-99166
- linux Ubuntu 26.10 7.3.0-10.10
- linux-aws Ubuntu 26.10 7.3.0-1004.4
- linux-gcp Ubuntu 26.10 7.3.0-1004.4
- linux-raspi Ubuntu 26.10 7.3.0-1004.4
- linux-riscv Ubuntu 26.10 7.3.0-10.10.1
- linux-oracle Ubuntu 26.10 7.3.0-1004.4
- linux-realtime Ubuntu 26.10 7.3.0-10.10.1
ubuntu advisories UBUNTU-CVE-2026-99166
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- kernel Azure Linux 3.0 6.6.161.1-1
azure linux advisories AZL-111311
Azure Linux vulnerability data, Copyright (c) Microsoft Corporation, from https://github.com/microsoft/AzureLinuxVulnerabilityData via OSV, under the MIT licence; changed: normalised to fixed package versions per release. MIT
- git.kernel.org/stable/c/0d15e853aa88da5375edd32b39d08a048b64a1c5 commit
- git.kernel.org/stable/c/8c77774535c3d6162929521a6fa11e3db086fa32 commit
- git.kernel.org/stable/c/8973f70cb068012d83cff1cfa3f45ef94ab02267 commit
- git.kernel.org/stable/c/a2fde862b98db8908e2ebaffbb35a75a0e9d5b33 commit
- git.kernel.org/stable/c/074bb7cdc3e26afa698888ba56fc1df0e3f24650 commit
- git.kernel.org/stable/c/5f23e4e3a31dacfd82a8f56be253adc0910ee84f commit
- git.kernel.org/stable/c/ca14c289ed9ffed6cc64290d039e923e5720a8bf commit
- git.kernel.org/stable/c/492ba6ac1b1ffb8a06ff52db0825c1af2cdb28c8 commit
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-99166 updated cvss 5.9
kernel: kernel: Denial of Service via uninitialized pointer dereference in RDS
-
Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 moreaffected: no fix planned “Out of support scope”
-
Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 more Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 more Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +83 more Red Hat Enterprise Linux 10 kernel Red Hat OpenShift Container Platform 4 openshift/ose-rhel-coreos-8, openshift/ose-rhel-coreos-9 Red Hat OpenShift Container Platform 5 openshift/ose-rhel-coreos-9not affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
Exploit prediction
0.18% chance of exploitation in the next 30 days, higher than 7% of all scored CVEs (FIRST EPSS, 2026-11-08).
Affected products
- Linux Linux
Classification
- Technology feeds
References
- git.kernel.org /stable/c/0d15e853aa88da5375edd32b39d08a048b64a1c5
- git.kernel.org /stable/c/8c77774535c3d6162929521a6fa11e3db086fa32
- git.kernel.org /stable/c/8973f70cb068012d83cff1cfa3f45ef94ab02267
- git.kernel.org /stable/c/a2fde862b98db8908e2ebaffbb35a75a0e9d5b33
- git.kernel.org /stable/c/074bb7cdc3e26afa698888ba56fc1df0e3f24650
- git.kernel.org /stable/c/5f23e4e3a31dacfd82a8f56be253adc0910ee84f
- git.kernel.org /stable/c/ca14c289ed9ffed6cc64290d039e923e5720a8bf
- git.kernel.org /stable/c/492ba6ac1b1ffb8a06ff52db0825c1af2cdb28c8
Sources
- CVE List CVE-2026-99166
- NVD CVE-2026-99166
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.