Page generated: 09 Nov 2026, 05:28 UTC
← Dashboard

CVE-2026-99228

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 inter…

Read full description
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.
CVSS — (—)

Attention and evidence

HYPE SCORE
0.0/10
REALITY · THREAT PRIORITY
0.0–3.5/10
Missing inputs: range of priority

Evidence confidence: Insufficient evidence

Why this priority?
  • Fresh EPSS: 0.16%: +0.00

Technical severity unavailable

General review priority, not probability, victim count or asset-specific risk. A range covers missing CVSS/EPSS inputs within the current evidence state.

Sources: 1 documents and public datasets.

Hype components

Headline sample (25%)
0/100
Press, 30 days (60%)
0/100
Grounded branding (15%)
0/100
HYPE TOTAL0/100

Sources and documents

Latest Vulnerabilities
Technical advisory · 02 Nov 2026, 16:17 · CVE-2026-99228 - io_uring/io-wq: don't lose the signal that ends work

Score evolution

● Hype   ● Reality

First record: hype 0.0 · reality 0.0 (2026-11-03 14:09). The curve appears once the score changes.

Public exploit evidence

0

Public exploit entries / repo candidates

Evidence context and dated references

Reality is general threat/review priority, combining observed exploitation, CVSS severity and fresh EPSS. Evidence confidence is separate. This is not calibrated risk, a victim count or an asset-specific assessment. A range reflects missing numeric inputs. Published 6 days ago. Exploitation evidence usually takes weeks to show up: a low reality score can mean there is no data yet, not that the flaw is mild.

Evidence in context

Confidence in exploitation evidence
Insufficient evidence
Priority basis
Exploitation in attacks unconfirmed; severity unavailable; EPSS 0.2%
Attention, last 30 days
0 distinct story titles; 0 press documents; 0 publisher domains.
Technical potential
Not available as a validated CVSS vector..
Observed activity
No exploitation observation is recorded.
Known scale
Not quantified.
Evidence confidence basis
Insufficient evidence

Score evaluated: 2026-11-05 14:00:34.806270+00:00 · EPSS snapshot: 2026-11-05T12:03:04Z

Source event timeline
Published
02 Nov 2026, 16:06
Score calculated
05 Nov 2026, 14:00