{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-31463", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2026-03-09T15:48:24.092Z", "datePublished": "2026-04-22T13:53:54.224Z", "dateUpdated": "2026-08-05T12:22:44.255Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-05T12:22:44.255Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\niomap: fix invalid folio access when i_blkbits differs from I/O granularity\n\nCommit aa35dd5cbc06 (\"iomap: fix invalid folio access after\nfolio_end_read()\") partially addressed invalid folio access for folios\nwithout an ifs attached, but it did not handle the case where\n1 << inode->i_blkbits matches the folio size but is different from the\ngranularity used for the IO, which means IO can be submitted for less\nthan the full folio for the !ifs case.\n\nIn this case, the condition:\n\n if (*bytes_submitted == folio_len)\n ctx->cur_folio = NULL;\n\nin iomap_read_folio_iter() will not invalidate ctx->cur_folio, and\niomap_read_end() will still be called on the folio even though the IO\nhelper owns it and will finish the read on it.\n\nFix this by unconditionally invalidating ctx->cur_folio for the !ifs\ncase." } ], "metrics": [ { "cvssV3_1": { "version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 9.8, "baseSeverity": "CRITICAL" }, "scenarios": [ { "lang": "en", "value": "AV:N - The vulnerable iomap buffered-read path can be reached by remote read requests when an in-kernel file server such as ksmbd or nfsd serves an iomap-backed filesystem, passing network-controlled reads into VFS/page-cache read paths. This is a reasonable deployment for Linux storage servers.\nAC:L - Once the affected filesystem/block-device geometry exists, triggering is a normal buffered read or readahead of a range that submits less than the folio size without an iomap_folio_state. No attacker-uncontrolled race is required for the invalid folio ownership/completion path.\nPR:N - A remote client can trigger reads through guest or otherwise unauthenticated exported file service configurations without local kernel privileges. Locally, the same path only requires ordinary read access to a file.\nUI:N - The attacker triggers the bug by issuing read requests directly. No separate victim action is required.\nS:U - The vulnerable component and impacted resources are within the same kernel security authority. This is not a VM escape, IOMMU bypass, or cross-scope boundary violation.\nC:H - The stale folio pointer can be accessed after async read completion and, for readahead, after the readahead reference is dropped, making it a plausible use-after-free of page-cache metadata. Following the required higher-severity rule, this memory-safety issue is treated as capable of kernel memory disclosure.\nI:H - The same invalid folio access and double completion/unlock can corrupt page or folio state, potentially acting on reclaimed or reused memory. Under the higher-severity rule, this is treated as kernel memory corruption with high integrity impact.\nA:H - The bug can trigger WARN/VM_BUG_ON paths, double-unlock behavior, hangs, or kernel crashes. It is therefore high availability impact." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "fs/iomap/buffered-io.c" ], "versions": [ { "version": "b2f35ac4146d32d4424aaa941bbc681f12c1b9e6", "lessThan": "4a927f670cdb0def226f9f85f42a9f19d9e09c88", "status": "affected", "versionType": "git" }, { "version": "b2f35ac4146d32d4424aaa941bbc681f12c1b9e6", "lessThan": "bd71fb3fea9945987053968f028a948997cba8cc", "status": "affected", "versionType": "git" } ] }, { "product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "fs/iomap/buffered-io.c" ], "versions": [ { "version": "6.19", "status": "affected" }, { "version": "0", "lessThan": "6.19", "status": "unaffected", "versionType": "semver" }, { "version": "6.19.11", "lessThanOrEqual": "6.19.*", "status": "unaffected", "versionType": "semver" }, { "version": "7.0", "lessThanOrEqual": "*", "status": "unaffected", "versionType": "original_commit_for_fix" } ] } ], "cpeApplicability": [ { "nodes": [ { "operator": "OR", "negate": false, "cpeMatch": [ { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.19", "versionEndExcluding": "6.19.11" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.19", "versionEndExcluding": "7.0" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/4a927f670cdb0def226f9f85f42a9f19d9e09c88" }, { "url": "https://git.kernel.org/stable/c/bd71fb3fea9945987053968f028a948997cba8cc" } ], "title": "iomap: fix invalid folio access when i_blkbits differs from I/O granularity", "x_generator": { "engine": "bippy-1.2.0" } } } }