UBUNTU-CVE-2026-99130: Medium severity vulnerability

Published Oct 28, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved: iouring/cancel: don't spin on local work the task can't run iouringcancelgeneric() refuses to sleep while any ring on the exiting task's tctx has local work pending. It assumes the task is that ring's submitter and that the next iouringtrycancelrequests() pass will run the work. This does not hold for a ring that was still IORINGSETUPRDISABLED when the task got its tctx node from iouringcreate() or ioringfdregister(). The submitter is set later by IORINGREGISTERENABLERINGS, possibly from another task, and only the submitter may run local work on an IORINGSETUPDEFERTASKRUN ring. To the exiting task the work stays pending forever, the loop never reaches schedule(), and the task trips the WARNONONCE() once and then spins in doexit(). An unprivileged user can set this up at will by creating a disabled ring, having a child enable it and stop, posting to the ring with IORINGOPMSGRING and exiting with a request in flight that only the child can complete. The exiting thread burns a CPU until the child runs or dies, and with paniconwarn set the WARN panics the kernel. Fix by skipping the sleep only when ioalloweddefertwrun() allows the task to run the work. This is reasonable since work it cannot run cannot complete any of its requests either, so nothing is lost by sleeping. Drop the WARNONONCE() since handing a disabled ring to another thread is a supported scenario, not a bug state.

Event History

Oct 28, 2026
CVE Published
via OSV·12:00 AM
Data Sourced
via OSV·12:00 AM
DescriptionSeverityAffected Software

Frequently Asked Questions

1

Does exploiting this require privileged access or remote access?

No privileged access is required. An unprivileged user can trigger the condition by creating a disabled io_uring ring, having a child task enable it and stop, posting with IORING_OP_MSG_RING, and then exiting while a request remains in flight.

2

What is the operational impact if the issue is triggered?

The exiting thread can spin in do_exit() and consume a CPU until the child task runs or exits. The condition also triggers WARN_ON_ONCE(); systems configured with panic_on_warn will panic the kernel.

3

What signs could indicate the system has encountered this issue?

Relevant indicators are a WARN_ON_ONCE() event accompanied by a task stuck spinning during exit and sustained CPU consumption. On hosts with panic_on_warn enabled, the warning may instead be followed by a kernel panic.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203