GHSA-5WH8-RGP3-6J39
Vulnerability from github – Published: 2026-08-15 06:32 – Updated: 2026-08-15 06:32In the Linux kernel, the following vulnerability has been resolved:
ocfs2: reject non-inline dinodes with i_size and zero i_clusters
On a volume mounted without OCFS2_FEATURE_INCOMPAT_SPARSE_ALLOC, a non-inline regular file with non-zero i_size and zero i_clusters is structurally malformed: the extent map declares no allocated clusters yet the size header claims content exists. Keep rejecting that shape, but express it through a shared predicate so the same invariant is available to normal inode reads and online filecheck.
The same zero-cluster shape is also malformed for non-inline directories. ocfs2 directory growth allocates backing storage before advancing i_size, and ocfs2_dir_foreach_blk_el() later walks until ctx->pos reaches i_size_read(inode). A forged directory dinode with a huge i_size and no clusters would repeatedly fail on holes while advancing through the claimed size.
Sparse regular files remain exempt: on sparse-alloc volumes, truncate can legitimately grow i_size without allocating clusters. System inodes and inline-data dinodes also retain their separate storage rules.
Mirror the check in ocfs2_filecheck_validate_inode_block() as well. filecheck reports through its own error namespace, so malformed size/cluster state is logged as a filecheck invalid-inode result rather than via ocfs2_error(), but it must not proceed into ocfs2_populate_inode().
{
"affected": [],
"aliases": [
"CVE-2026-72159"
],
"database_specific": {
"cwe_ids": [],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2026-08-15T06:21:33Z",
"severity": null
},
"details": "In the Linux kernel, the following vulnerability has been resolved:\n\nocfs2: reject non-inline dinodes with i_size and zero i_clusters\n\nOn a volume mounted without OCFS2_FEATURE_INCOMPAT_SPARSE_ALLOC, a\nnon-inline regular file with non-zero i_size and zero i_clusters is\nstructurally malformed: the extent map declares no allocated clusters yet\nthe size header claims content exists. Keep rejecting that shape, but\nexpress it through a shared predicate so the same invariant is available\nto normal inode reads and online filecheck.\n\nThe same zero-cluster shape is also malformed for non-inline directories. \nocfs2 directory growth allocates backing storage before advancing i_size,\nand ocfs2_dir_foreach_blk_el() later walks until ctx-\u003epos reaches\ni_size_read(inode). A forged directory dinode with a huge i_size and no\nclusters would repeatedly fail on holes while advancing through the\nclaimed size.\n\nSparse regular files remain exempt: on sparse-alloc volumes, truncate can\nlegitimately grow i_size without allocating clusters. System inodes and\ninline-data dinodes also retain their separate storage rules.\n\nMirror the check in ocfs2_filecheck_validate_inode_block() as well. \nfilecheck reports through its own error namespace, so malformed\nsize/cluster state is logged as a filecheck invalid-inode result rather\nthan via ocfs2_error(), but it must not proceed into\nocfs2_populate_inode().",
"id": "GHSA-5wh8-rgp3-6j39",
"modified": "2026-08-15T06:32:14Z",
"published": "2026-08-15T06:32:14Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-72159"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/2174c68f623b74bd8690a4a6a4a52882d8ac3dc3"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/38c1ef7ce50eb4af0f89038b8aba12396ddb9233"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/3bfeb436d4be6a2beb56cab344770e93e6b07260"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/416d3e5f8a30ed04fe21ba7dc73c2841c3b56265"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/7ebc672fab7a76e1e47e0f2fc1ee48118d27fde4"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/83f6756a7b71adec0a41ae68e079a38906d59c6c"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/d837068eefbc2651fe5789bf75a0f945710f7b8e"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/ed0f938f946f16b772e99cb8c277ab57828e5be4"
}
],
"schema_version": "1.4.0",
"severity": []
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.