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().
Published: 2026-11-03
Score: n/a
EPSS: n/a
KEV: No
Impact: Denial of Service (Kernel‑level deadlock)
Action: Immediate Patch
AI Analysis

Impact

The vulnerability arises from an incorrect memory ordering between setting an exit flag and cancelling queued worker creation tasks in the Linux kernel’s I/O workqueue subsystem. The missing barrier causes a worker to remain queued while the exit flag is not visible to other parts of the kernel on weakly ordered architectures, leading to an indefinite wait on the worker_done synchronization primitive. This results in a kernel‑level deadlock that can halt system shutdown or worker creation processes.

Affected Systems

The flaw exists in the Linux kernel’s io‑wq implementation, affecting any release that incorporates the buggy code path while lacking the patch that inserts a memory barrier after the set_bit() operation. Specific vulnerable kernel versions are not listed; administrators should examine kernel change logs for the commit that added the barrier and verify that their running image includes it.

Risk and Exploitability

The risk is a denial of service that can be triggered by user‑space code that submits work to an io_uring or analogous workqueue during system shutdown. The exploit requires kernel‑sensitive execution and is only feasible on architectures with weak memory ordering, such as some ARM or MIPS variants. EPSS data is not available, and the vulnerability is not listed in the CISA KEV catalogue, indicating no publicly known active exploitation at this time. The potential for a critical service disruption warrants prompt remediation. The likely attack vector is inferred from the description of weakly ordered architectures and user‑space work submission during shutdown, as the input does not explicitly state how an attacker would trigger the condition.

Generated by OpenCVE AI on November 3, 2026 at 12:55 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Update the Linux kernel to a version that contains the patch inserting the missing memory barrier after set_bit().
  • If an immediate kernel upgrade is not possible, disable the io_uring subsystem by recompiling the kernel with CONFIG_IO_URING and related workqueue options turned off to avoid the faulty code path.
  • Monitor for signs of indefinite wait during shutdown or worker creation, and apply memory‑ordering mitigations such as enabling CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU on weakly ordered architectures where available.

Generated by OpenCVE AI on November 3, 2026 at 12:55 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 03 Nov 2026 19:30:00 +0000


Tue, 03 Nov 2026 13:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-665

Tue, 03 Nov 2026 13:00:00 +0000

Type Values Removed Values Added
First Time appeared Linux linux
Vendors & Products Linux linux

Tue, 03 Nov 2026 11:30:00 +0000

Type Values Removed Values Added
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().
Title io-wq: order the exit bit against worker creation task work
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-11-03T19:13:08.710Z

Reserved: 2026-09-25T10:25:14.403Z

Link: CVE-2026-99243

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-11-03T12:17:30.553

Modified: 2026-11-03T12:17:30.553

Link: CVE-2026-99243

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-11-03T13:00:10Z

Weaknesses