Every CVE Search/ Get API key

CVE-2026-99265

io_uring/openclose: keep the lock in io_pipe_fixed()

No score

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

Affected packages
PackageAffectedFixed
linux
Debian: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 less
6.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

History
WhenChangedSources
2026-11-03referencesEUVD
2026-11-03affected, aliases, referencesOSV
2026-11-03factsEUVD, NVD
2026-11-03aliases, publishedEUVD
2026-11-03products, published, references, titleCVE List
2026-11-03createdGitHub Advisories

References

This page doesn't list everything

Left out here: 147 versions. The JSON record has them.

MoveEnter Open