CVE-2026-99265: io_uring/openclose: keep the lock in io_pipe_fixed()
In the Linux kernel, the following vulnerability has been resolved:
iouring/openclose: keep the lock in iopipefixed()
iopipefixed() installs both ends of the pipe in the fixed file table, drops ->uringlock, and copies the slot numbers to the application. If that faults, it takes the lock again and removes whatever is in these slots.
If the request is run by io-wq the lock really is dropped in between, and the slots are visible to everybody else. By the time the error path gets to them, they may have been closed and reused, by IORINGOPCLOSE and a direct open or accept, or by IORINGREGISTERFILESUPDATE. Then a file is removed from the table that has nothing to do with the failed request.
Do the copy with the lock held. Faulting in user memory under ->uringlock is fine, the registration paths do it all the time.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
debian/linuxto a version that resolves this vulnerability.Fixed in 6.1.176-1Fixed in 6.1.190-1Fixed in 6.12.107-1Fixed in 6.12.115-2Fixed in 7.2.15-1 - Upgrade
Upgrade
linux/Kernelto a version that resolves this vulnerability.Fixed in 6.18.60 - Upgrade
Upgrade
linux/Kernelto a version that resolves this vulnerability.Fixed in 7.2.14 - Compensating control
In io_pipe_fixed(), copy the pipe slot numbers to the application while holding ->uring_lock; do not drop the lock before the copy.