CVE-2026-72491: net/9p: fix race condition on rdma->state in trans_rdma.c

Published Aug 15, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

net/9p: fix race condition on rdma->state in transrdma.c

The rdma->state field is modified without holding reqlock in both recvdone() and p9cmeventhandler(), while rdmarequest() accesses the same field under the reqlock spinlock. This inconsistent locking creates a race condition:

- recvdone() running in softirq completion context sets rdma->state = P9RDMAFLUSHING without acquiring reqlock

- p9cmeventhandler() modifies rdma->state at multiple points (ADDRRESOLVED, ROUTERESOLVED, ESTABLISHED, CLOSED) without reqlock

- rdmarequest() uses spinlockirqsave(&rdma->reqlock, flags) to protect the read-modify-write of rdma->state

The race can cause lost state transitions: recvdone() or the CM event handler could set state to FLUSHING/CLOSED while rdmarequest() is concurrently checking or modifying state under the lock, leading to the FLUSHING transition being silently overwritten by CLOSING. This corrupts the connection state machine and can cause use-after-free on RDMA request objects during teardown.

Fix by adding reqlock protection to all rdma->state modifications in recvdone() and p9cmeventhandler(), matching the pattern already used in rdmarequest(). Use spinlockirqsave/spinunlockirqrestore in the CM event handler since it can race with recvdone() which runs in softirq context.

Tested with a kernel module that races two threads (simulating rdmarequest and recvdone/CM handler) on rdma->state with proper locking: 5.5M+ FLUSHING writes over 27M iterations with 0 lost transitions.

Affected Software

1 affected component
Linux Kernel

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    In net/9p/trans_rdma.c, add/extend spin_lock_irqsave(&rdma->req_lock, flags)/spin_unlock_irqrestore(&rdma->req_lock, flags) so that all read-modify-write operations on rdma->state (e.g., transitions like rdma->state = P9_RDMA_FLUSHING and the corresponding CLOSED/FLUSHING/CLOSING transitions) are performed under the same req_lock in both softirq completion (recv_done) and the CM event handler (p9_cm_event_handler), matching the locking pattern already used where applicable. Ensure the FLUSHING transition cannot be overwritten by a concurrent CLOSING transition without holding req_lock.

    Linux kernel (net/9p: trans_rdma.c) req_lock protection for rdma->state read-modify-write = Acquire req_lock with spin_lock_irqsave() and release with spin_unlock_irqrestore() around every rdma->state modification in p9_cm_event_handler(), rdma_request(), and recv_done()

Event History

Aug 15, 2026
CVE Published
via MITRE·05:57 AM
Data Sourced
via MITRE·05:57 AM
Description
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2026-72491?

CVE-2026-72491 has a risk score of 44, indicating a significant impact.

2

How do I fix CVE-2026-72491?

To fix CVE-2026-72491, update to the latest version of the Linux Kernel that addresses this vulnerability.

3

What types of systems are affected by CVE-2026-72491?

CVE-2026-72491 affects systems using the Linux Kernel with the net/9p networking component.

4

What is the nature of the vulnerability in CVE-2026-72491?

CVE-2026-72491 is a race condition vulnerability that occurs due to improper access to the rdma->state field.

5

Is there a risk of data corruption with CVE-2026-72491?

Yes, CVE-2026-72491 can potentially lead to data corruption due to the race condition.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203