CVE-2026-80810

Source
https://cve.org/CVERecord?id=CVE-2026-80810
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80810.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-80810
Downstream
Published
2026-09-04T15:13:30.800Z
Modified
2026-09-06T03:46:47.231545666Z
Summary
io_uring/rsrc: fix folio size overflow in io_vec_fill_bvec()
Details

In the Linux kernel, the following vulnerability has been resolved:

iouring/rsrc: fix folio size overflow in iovecfillbvec()

iovecfill_bvec() computes the folio size with a plain int 1:

unsigned long folio_size = 1 << imu->folio_shift;

imu->folioshift is unsigned int and comes from folioshift() of the folio backing the registered buffer, so it can be 32 or more on a 64 bit kernel. Shifting int 1 that far is undefined, and on x86 and arm64 the count is taken modulo 32, so a shift of 34 yields 4 rather than 16G. Every other folio_shift shift in this file already uses 1UL.

The result is that the segment estimate and the fill loop disagree. ioestimatebvec_size() sizes the bvec array with the real shift:

max_segs += (iov[i].iov_len >> shift) + 2;

so a 1M iovec on a 16G folio is charged 2 segments, while iovecfillbvec() then walks the same iovec in foliosize chunks of 4 bytes and writes resbvec[bvecidx] a quarter of a million times, past the end of the array it was given. srcbvec is advanced once per iteration as well, so imu->bvec is read past its end at the same time. validatefixed_range() only checks that the range is inside the registered buffer and does not bound the segment count.

Reaching it needs a folio with a shift of at least 32, which means a gigantic hugetlb page: 16G on arm64 with 64K pages, where CONTPMDSHIFT is 34 and hugetlbaddhstate(CONTPMDSHIFT - PAGESHIFT) registers that size, and likewise on powerpc. x8664 tops out at 1G, so a shift of 30, which still fits in int and is unaffected.

Use 1UL, as the rest of the file does.

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/80xxx/CVE-2026-80810.json",
    "cna_assigner": "Linux"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
9ef4cbbcb4ac3786a1a4164507511b76b2a572c5
Fixed
45c945107e007b1fb73e21cd220277652a45521a
Fixed
6b308c37fbeba3aa8c634fb1ed53e2f63a5d5a5c
Fixed
3267d7c8ba51642117f7bdd1ece02b2540668476
Fixed
3f3a6a16bbe8bde76532d9415438f8cdef439e5d

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80810.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.15.0
Fixed
6.18.47
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.1.11
Type
ECOSYSTEM
Events
Introduced
7.2.0
Fixed
7.2.1

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80810.json"