Lost exit signal in Linux io_uring io-wq lets threads hang on exit
Key facts
- Attack vector
- —
- Privileges required
- —
- User interaction
- —
- Attack complexity
- —
- Impact type
- —
- Confidentiality · integrity · availability
- —
- Fix status
- Partial Red Hat: 4 without a fix
No CVSS vector from any source. Fix status from CNA and Red Hat.
Summary
The Linux kernel io_uring io-wq component is affected from 5.12 until the fixed versions. A bounded work item that has not started when the io-wq exits misses the one-time exit signal, so a thread that submits an open of a FIFO without a writer can hang in do_exit until the process is killed. The flaw is a lost wakeup, and the sources do not report exploitation.
Written with Claude Haiku 5.5 from the sources below · 2026-11-06
Description from the CNA
In the Linux kernel, the following vulnerability has been resolved: io_uring/io-wq: don't lose the signal that ends work When a thread exits, only its tracked requests are cancelled. Then its io-wq is torn down. io_wq_exit_workers() signals every worker, to get it out of an interruptible sleep, and waits for all of them to exit. Before they do, they go through the work that is left. Unbounded work is cancelled. Bounded work is run, as it is expected to end by itself. Not all of it does. An open has no file yet, so it counts as bounded, and the open of a FIFO waits for the other end. That is what the signal is for. But the workers are signalled once, and a worker that hasn't started the work by then loses the signal: io_wq_exit_workers() io_worker_handle_work() io_wq_worker_wake() set TIF_NOTIFY_SIGNAL io_assign_current_work() io_run_task_work() clear TIF_NOTIFY_SIGNAL io_wq_submit_work() fifo_open() wait_for_partner() wait_for_completion_timeout() The thread never gets out of do_exit(): IORING_OP_OPENAT of a FIFO without a writer, IOSQE_ASYNC exit of the thread that has submitted it hangs in more than 9 of 10 attempts (4 CPUs, KVM), until the process is killed. Set TIF_NOTIFY_SIGNAL for bounded work that is started with IO_WQ_BIT_EXIT set. The bit is set before the workers are signalled, and it is tested after the flag has been cleared, with clear_notify_signal() providing the barrier. So either the flag stays, or the bit is seen. Work that is started while the io-wq exits is treated like work that is being run at that time: it isn't interrupted unless it waits interruptibly.
Why it matters now
SSVC decision points
Not available: CISA has not published SSVC decision points for this record.
Affected products
Remediation
The Linux kernel is fixed in 6.1.191, 6.6.161, 6.12.115, 6.18.60, 7.2.14, 7.3.2 and 7.4-rc1. Red Hat gives no available fix plan for Red Hat Enterprise Linux 10, Red Hat Enterprise Linux 9, Red Hat OpenShift Container Platform 4 and Red Hat OpenShift Container Platform 5.
Written with Claude Haiku 5.5 from the sources below · 2026-11-06
- Fix · CNA Linux (Linux) Fixed in 6.1.191, 6.6.161, 6.12.115, 6.18.60, 7.2.14, 7.3.2, 7.4-rc1
Vendor assessments
Red Hat
Red Hat rating: Low. Red Hat's page for this CVE →
| Product | Status | Plan or fix |
|---|---|---|
| Red Hat Enterprise Linux 10 | Affected | No fix yet: Fix deferred |
| Red Hat Enterprise Linux 9 | Affected | No fix yet: Fix deferred |
| Red Hat OpenShift Container Platform 4 | Affected | No fix yet: Fix deferred |
| Red Hat OpenShift Container Platform 5 | Affected | No fix yet: Fix deferred |
Not affected: 4 products
- Red Hat Enterprise Linux 6
- Red Hat Enterprise Linux 7
- Red Hat Enterprise Linux 8
- Red Hat OpenShift Container Platform 4
Timeline
- 2026-11-02 Threatist record created from CVE-2026-99228
- 2026-11-02 Alias added: GHSA-gg4w-vf8m-hjh3
- 2026-11-03 Fix available: Linux/Linux@63c103279a95e82280092f2f4232e91e8117a252, Linux/[email protected] · CNA
- 2026-11-03 1 new reference · CNA
- 2026-11-04 Affected versions changed · Red Hat
- 2026-11-04 CVSS score added · Red Hat
- 2026-11-06 Fix available: Linux/[email protected], Linux/Linux@7df9a3b5eda51c512d3dd138e3b7daa525071757 · CNA
- 2026-11-06 1 new reference · CNA
References
Other 7
- https://git.kernel.org/stable/c/ddccc60f036b309430cf130d48aafed94ef7355a
- https://git.kernel.org/stable/c/08c42055b8f9a5d29236d34ad4bce08828239fe1
- https://git.kernel.org/stable/c/62996803c1b5f18176de255db4c843021f2d19c8
- https://git.kernel.org/stable/c/7309fea05a3d66af9746843c43fef14c10b8141e
- https://git.kernel.org/stable/c/fdb771015c1e13677b57a4015f0c938748f13781
- https://git.kernel.org/stable/c/7df9a3b5eda51c512d3dd138e3b7daa525071757
- https://git.kernel.org/stable/c/63c103279a95e82280092f2f4232e91e8117a252
More Linux vulnerabilities
- TI-2025-26358 tls: fix handling of zero-length records on the rx_list KEVCVSS 3.1CRITICAL 9.8
- TI-2026-38352 netfilter: bridge: make ebt_snat ARP rewrite writable KEVCVSS 3.1HIGH 8.8
- TI-2021-02452 Incorrect authorization in Ubuntu linux kernel KEVCVSS 3.1HIGH 8.8
- TI-2013-05264 The (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the… KEVCVSS 3.1HIGH 8.8
- TI-2022-00125 Integer overflow in kernel KEVCVSS 3.1HIGH 8.4
- TI-2013-01864 The perf_swevent_init function in kernel/events/core.c in the Linux kernel before 3.8.9… KEVCVSS 3.1HIGH 8.4
Sources
- CVE-2026-99228 · CVE Program
- CVE-2026-99228 · NVD
- FIRST EPSS
- GHSA-gg4w-vf8m-hjh3 · GitHub Advisory Database · CC BY 4.0
- CVE-2026-99228 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences