CVE-2026-99228 json
io_uring/io-wq: don't lose the signal that ends work
published 2026-11-02 6 d ago modified 2026-11-06 2 d ago also EUVD-2026-115270
- 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 5%
- public exploits
- 0
- none known
Summary
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.
Patch / fix
- Linux Linux 6.1.191, 6.6.161, 6.12.115, 6.18.60, 7.2.14, 7.3.2, 7.4-rc1
- linux Debian 13 6.12.115-1
- linux Debian 14 7.2.14-1
debian advisories DEBIAN-CVE-2026-99228
- kernel Azure Linux 3.0 6.6.161.1-1
azure linux advisories AZL-112559
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/ddccc60f036b309430cf130d48aafed94ef7355a commit
- git.kernel.org/stable/c/08c42055b8f9a5d29236d34ad4bce08828239fe1 commit
- git.kernel.org/stable/c/62996803c1b5f18176de255db4c843021f2d19c8 commit
- git.kernel.org/stable/c/7309fea05a3d66af9746843c43fef14c10b8141e commit
- git.kernel.org/stable/c/fdb771015c1e13677b57a4015f0c938748f13781 commit
- git.kernel.org/stable/c/7df9a3b5eda51c512d3dd138e3b7daa525071757 commit
- git.kernel.org/stable/c/63c103279a95e82280092f2f4232e91e8117a252 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-99228 updated cvss 3.3
kernel: kernel: Denial of Service via io_uring worker hang during thread exit
-
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-9 Red Hat OpenShift Container Platform 5 openshift/ose-rhel-coreos-9, openshift/ose-rhel-coreos-10affected: no fix available “Fix deferred”
-
Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more 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 OpenShift Container Platform 4 openshift/ose-rhel-coreos-8not 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.16% chance of exploitation in the next 30 days, higher than 5% of all scored CVEs (FIRST EPSS, 2026-11-08).
Affected products
- Linux Linux
Classification
- Technology feeds
References
- git.kernel.org /stable/c/ddccc60f036b309430cf130d48aafed94ef7355a
- git.kernel.org /stable/c/08c42055b8f9a5d29236d34ad4bce08828239fe1
- git.kernel.org /stable/c/62996803c1b5f18176de255db4c843021f2d19c8
- git.kernel.org /stable/c/7309fea05a3d66af9746843c43fef14c10b8141e
- git.kernel.org /stable/c/fdb771015c1e13677b57a4015f0c938748f13781
- git.kernel.org /stable/c/7df9a3b5eda51c512d3dd138e3b7daa525071757
- git.kernel.org /stable/c/63c103279a95e82280092f2f4232e91e8117a252
Sources
- CVE List CVE-2026-99228
- NVD CVE-2026-99228
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.