CVE-2026-99265
io_uring/openclose: keep the lock in io_pipe_fixed()
CVE-2026-99265 is a vulnerability with no CVSS score yet in Linux, published November 3, 2026. No source lists public exploit code. No source names a fixed version.
In the Linux kernel, the following vulnerability has been resolved:
io_uring/openclose: keep the lock in io_pipe_fixed()
io_pipe_fixed() installs both ends of the pipe in the fixed file table, drops ->uring_lock, 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 IORING_OP_CLOSE and a direct open or accept, or by IORING_REGISTER_FILES_UPDATE. 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 ->uring_lock is fine, the registration paths do it all the time.
What each source reports
CVE List No score
io_uring/openclose: keep the lock in io_pipe_fixed()
In the Linux kernel, the following vulnerability has been resolved:
io_uring/openclose: keep the lock in io_pipe_fixed()
io_pipe_fixed() installs both ends of the pipe in the fixed file table, drops ->uring_lock, 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 IORING_OP_CLOSE and a direct open or accept, or by IORING_REGISTER_FILES_UPDATE. 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 ->uring_lock is fine, the registration paths do it all the time.
- Record
CVE-2026-99265- Updated
- 2026-11-03
EUVDEUVD-2026-115790 No score
In the Linux kernel, the following vulnerability has been resolved:
io_uring/openclose: keep the lock in io_pipe_fixed()
io_pipe_fixed() installs both ends of the pipe in the fixed file table, drops ->uring_lock, 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 IORING_OP_CLOSE and a direct open or accept, or by IORING_REGISTER_FILES_UPDATE. 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 ->uring_lock is fine, the registration paths do it all the time.
- Record
EUVD-2026-115790- Updated
- 2026-11-03
GitHub AdvisoriesGHSA-h7vq-7wmq-j475 No score
In the Linux kernel, the following vulnerability has been resolved: io_uring/openclose: keep the...
In the Linux kernel, the following vulnerability has been resolved:
io_uring/openclose: keep the lock in io_pipe_fixed()
io_pipe_fixed() installs both ends of the pipe in the fixed file table, drops ->uring_lock, 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 IORING_OP_CLOSE and a direct open or accept, or by IORING_REGISTER_FILES_UPDATE. 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 ->uring_lock is fine, the registration paths do it all the time.
- Record
GHSA-h7vq-7wmq-j475- Updated
- 2026-11-03
NVD No score
In the Linux kernel, the following vulnerability has been resolved:
io_uring/openclose: keep the lock in io_pipe_fixed()
io_pipe_fixed() installs both ends of the pipe in the fixed file table, drops ->uring_lock, 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 IORING_OP_CLOSE and a direct open or accept, or by IORING_REGISTER_FILES_UPDATE. 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 ->uring_lock is fine, the registration paths do it all the time.
- Record
CVE-2026-99265- Updated
- 2026-11-03
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
linuxDebian:14 |
All versions, plus listed versions 6.12.100-16.12.101-16.12.105-16.12.107-16.12.111-1 Show 45 moreShow less6.12.113-16.12.115-16.12.115-26.12.38-16.12.41-16.12.43-16.12.43-1~bpo12+16.12.48-16.12.57-16.12.57-1~bpo12+16.12.63-16.12.63-1~bpo12+16.12.69-16.12.69-1~bpo12+16.12.73-16.12.73-1~bpo12+16.12.74-16.12.74-26.12.74-2~bpo12+16.12.85-16.12.85-1~bpo12+16.12.86-16.12.86-1~bpo12+16.12.88-16.12.88-1~bpo12+16.12.90-16.12.90-1~bpo12+16.12.90-26.12.90-2~bpo12+16.12.94-16.12.94-1~bpo12+16.12.95-16.12.95-1~bpo12+16.12.96-16.13.10-1~exp16.13.11-1~exp16.13.2-1~exp16.13.3-1~exp16.13.4-1~exp16.13.5-1~exp16.13.6-1~exp16.13.7-1~exp16.13.8-1~exp16.13.9-1~exp16.13~rc6-1~exp1 |
None known |
History
| When | Changed | Sources |
|---|---|---|
| 2026-11-03 | references | EUVD |
| 2026-11-03 | affected, aliases, references | OSV |
| 2026-11-03 | facts | EUVD, NVD |
| 2026-11-03 | aliases, published | EUVD |
| 2026-11-03 | products, published, references, title | CVE List |
| 2026-11-03 | created | GitHub Advisories |
References
git.kernel.org/stable/c/b4b7b2d19dab611f3cf3d052aa19278e7e4c4683
git.kernel.org/stable/c/7299a32764ab875443b58581d929027954dcf24c
git.kernel.org/stable/c/a3d7ee11289f657aa9af826d8f0844221292a27a
nvd.nist.gov/vuln/detail/CVE-2026-99265
github.com/advisories/GHSA-h7vq-7wmq-j475
security-tracker.debian.org/tracker/CVE-2026-99265
Left out here: 147 versions. The JSON record has them.