GPU VulnDB

Database/Kernel, userspace & hypervisor

Linux kernel io_uring/waitid: repeated failed cancellations wrap the reference counter and double-complete a request

CVSS 7.8CVE-2026-99227Kernel, userspace & hypervisorcurated

Impact

__io_waitid_cancel() increments the 31-bit reference field in io_waitid->refs even when it fails to claim the request, and the request stays discoverable by cancellation. Repeated failed cancel attempts wrap the counter to zero, after which a later cancellation claims ownership and completes the request a second time - a double free of a request object reachable from unprivileged code. This is a separate defect from the ->head ordering bug in the same file; the fix here is to use atomic_fetch_or() and return early when the cancel flag was already set. Exposure is the same local-escalation shape on a multi-tenant GPU node, and the remedy is a kernel update, not a configuration change.

Who can reach it

Local unprivileged user or container process able to submit io_uring waitid requests and issue cancellations against them in a loop. No remote vector.

What to do

Apply the stable kernel commits listed in the advisory or the distro kernel containing them, then drain and reboot each affected node. Disabling io_uring for untrusted workloads (seccomp, or kernel.io_uring_disabled) is an interim mitigation that needs no reboot.

References

Related entries

All Kernel, userspace & hypervisor entries

This entry is curated: imported from vendor advisories with machine assistance, not yet individually verified. Confirm against your vendor's advisory before acting, and report anything wrong.