Skip to main content
← Vulnerabilities

io-wq: order the exit bit against worker creation task work

Written by anthropic/claude-haiku-5.5 from the sources below. Verify against them.

—Not rated
Exploited
No known exploitation
Fix
Fixed in 5.15.224
Who is exposed
Not reported

Do first: Upgrade to a fixed version: 5.15.224.

20Pcve.now Index 20 of 100 · methodology v3 · provisional
  • Exploitation?/40Exploitation: unknown (data gap). No CISA SSVC exploitation rating yet
  • Exposure?/25Exposure: unknown (data gap). No advisory context yet
  • Reach20/20Affects Linux kernel (software on nearly every server, desktop or phone)
  • Severity?/10Severity: unknown (data gap). No CVSS score or vendor rating
  • No patch0/5No signal

What would change the score

  • Would score about 75 if added to CISA KEV
  • Would score about 70 if CISA's SSVC rates exploitation active
  • Would score about 42 if advisories confirm default setups are exposed

CVE-2026-99243 is not in CISA's Known Exploited Vulnerabilities (KEV) catalog. No public exploit code is tracked. It affects Linux; fixed in 5.15.224.

Published
Last modified
Published
Not listed in CISA KEV
20/100 · provisional
Fix
Fixed in 5.15.224
None on Exploit-DB, Metasploit or GitHub

Summary

The Linux kernel's io_uring subsystem (its io-wq asynchronous worker code) is affected. A memory-ordering flaw could leave a queued worker-creation task unprocessed during shutdown, so the exiting task waits indefinitely and hangs.

Read the original description

In the Linux kernel, the following vulnerability has been resolved: io-wq: order the exit bit against worker creation task work io_wq_exit_workers() cancels task work for queued worker creation with task_work_cancel_match(). That has a plain load of task->task_works. io_queue_worker_create() adds the new entry and tests IO_WQ_BIT_EXIT to cancel it if the workqueue is already on its way out. That must be ordered. task_work_add() has a full barrier via cmpxchg(). But io_wq_exit_start() sets the bit with set_bit() which doesn't have any memory ordering. So afaict, on weakly ordered architectures the exiting task may load task_works before the store of the bit is visible. The other side tests the bit before the store is visible as well. So the entry remains queued with worker_refs and the exiting task waits on worker_done indefinitely. If the task still has rings then io_uring_del_tctx_node() provides the barrier via test_and_set_bit() in io_wq_set_exit_on_idle(). When it has closed all rings though that barrier is gone. Add the barrier after the set_bit().

What to do

  • Upgrade to a fixed version: 5.15.224.

Timeline

  1. CVE published
  2. First seen by cve.now
  3. Record last updated

Affected versions

  • Linux Linux

    From 5.15.11 · fixed in 5.15.224

  • Linux Linux

    5.16

Evidence 8

  1. Link
  2. Link
  3. Link
  4. Link
  5. Link
Show all 8 sourcesShow fewer sources
  1. Link
  2. Link
  3. Link

Corrections

None so far.

Something wrong on this page? Report an error. Every fix is listed here.

FAQ

Questions about CVE-2026-99243

Is CVE-2026-99243 being exploited?

It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.Source: cve.now feed data

Which versions are affected by CVE-2026-99243?

Linux: from 5.15.11 before 5.15.224. Linux: version 5.16.Source: cve.now feed data

How do I fix CVE-2026-99243?

Upgrade to a fixed version: 5.15.224.Source: cve.now feed data