tipc: destroy topsrv workqueues before closing connections
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- How many real-world setups can hit the bug, from the vendor's advisory and CISA data. It does not know your setup.What do these mean? →
- Specific setups only
- Fix
- Fixed in 6.6.160, 6.12.113, 6.18.57, 7.2.11
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: tipc: destroy topsrv workqueues before closing connections tipc_topsrv_stop() closed subscriber connections while the topology server's send and receive workqueues were still running. Socket callbacks and subscription events could then queue more work, and in-flight send/recv work could drop the last connection reference during the conn_idr walk. That race produced several teardown failures: refcount_t addition on 0 from conn_get() on a connection whose release was blocked on idr_lock, a subsequent use-after-free in tipc_conn_close(), queue_work() on an already destroyed workqueue from the listener data-ready callback, and an RCU stall in tipc_topsrv_exit_net() while the walk spun under idr_lock. Clear srv->listener under idr_lock so it acts as a shutdown flag, skip queue_work() once it is NULL, destroy the workqueues to flush in-flight work, and only then close the remaining connections. Refuse tipc_conn_lookup() after that flag is cleared, and drop idr_lock when the teardown walk finds no connection, so an in-flight subscription event cannot pin idr_in_use while the walk holds the lock. v3 supersedes the narrower in-thread diff Tung Quang Nguyen posted on 2026-09-23. It keeps his teardown order and adds the lookup refusal and the empty-idr unlock.
Timeline
- CVE published
- First seen by cve.now
- Record last updated
Affected versions
- Linux Linux
Version range not reported
- Linux Linux
3.11
- KernelLinux
From 3.11.0 · fixed in 6.6.160; From 6.7.0 · fixed in 6.12.113; From 6.13.0 · fixed in 6.18.57; From 6.19.0 · fixed in 7.2.11
References 8
git.kernel.org
- stable/c/09dbd610f78aaed65d7b379c270ce4090a8151ac
- stable/c/21622e5ae8b232c2e64eb1adf5546cf078d2987d
- stable/c/7167afaaaee37191f8b6afa0c91e0fef41460705
- stable/c/7f796bb3b440d7f1b14c0e3b520462eb34f553af
- stable/c/da9c16568bc79140a54c1f5fcf07a0305df47b37
- stable/c/0af8780bdfdfc91fb9127bddb9c48fab67dc9d9e
- stable/c/fb717c536af2aafeca520ff11d1e0f25f7ab8fa9
- stable/c/3acdd44385bc7e2e57605e073691ce69cc5a960d