gfs2: Validate i_depth for exhash directories
Summary
| CVE | CVE-2025-38710 |
|---|---|
| State | PUBLISHED |
| Assigner | Linux |
| Source Priority | CVE Program / NVD first with legacy fallback |
| Published | 2025-09-04 16:15:40 UTC |
| Updated | 2026-04-11 13:16:35 UTC |
| Description | In the Linux kernel, the following vulnerability has been resolved: gfs2: Validate i_depth for exhash directories A fuzzer test introduced corruption that ends up with a depth of 0 in dir_e_read(), causing an undefined shift by 32 at: index = hash >> (32 - dip->i_depth); As calculated in an open-coded way in dir_make_exhash(), the minimum depth for an exhash directory is ilog2(sdp->sd_hash_ptrs) and 0 is invalid as sdp->sd_hash_ptrs is fixed as sdp->bsize / 16 at mount time. So we can avoid the undefined behaviour by checking for depth values lower than the minimum in gfs2_dinode_in(). Values greater than the maximum are already being checked for there. Also switch the calculation in dir_make_exhash() to use ilog2() to clarify how the depth is calculated. Tested with the syzkaller repro.c and xfstests '-g quick'. |
Risk And Classification
Primary CVSS: v3.1 5.5 MEDIUM from [email protected]
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Problem Types: NVD-CWE-noinfo
CVSS v3.1 Breakdown
Attack Vector
LocalAttack Complexity
LowPrivileges Required
LowUser Interaction
NoneScope
UnchangedConfidentiality
NoneIntegrity
NoneAvailability
HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
NVD Known Affected Configurations (CPE 2.3)
| Type | Vendor | Product | Version | Update | Edition | Language |
|---|---|---|---|---|---|---|
| Operating System | Linux | Linux Kernel | All | All | All | All |
Vendor Declared Affected Products
| Source | Vendor | Product | Version | Platforms |
|---|---|---|---|---|
| CNA | Linux | Linux | affected 9a0045088d888c9c539c8c626a366cb52c0fbdab cddea0c721106ea480371412d8de21705eb27376 git | Not specified |
| CNA | Linux | Linux | affected 9a0045088d888c9c539c8c626a366cb52c0fbdab 53a0249d68a210c16e961b83adfa82f94ee0a53d git | Not specified |
| CNA | Linux | Linux | affected 9a0045088d888c9c539c8c626a366cb52c0fbdab b5f46951e62377b6e406fadc18bc3c5bdf1632a7 git | Not specified |
| CNA | Linux | Linux | affected 9a0045088d888c9c539c8c626a366cb52c0fbdab 9680c58675b82348ab84d387e4fa727f7587e1a0 git | Not specified |
| CNA | Linux | Linux | affected 9a0045088d888c9c539c8c626a366cb52c0fbdab 557c024ca7250bb65ae60f16c02074106c2f197b git | Not specified |
| CNA | Linux | Linux | affected 2.6.26 | Not specified |
| CNA | Linux | Linux | unaffected 2.6.26 semver | Not specified |
| CNA | Linux | Linux | unaffected 6.6.134 6.6.* semver | Not specified |
| CNA | Linux | Linux | unaffected 6.12.43 6.12.* semver | Not specified |
| CNA | Linux | Linux | unaffected 6.15.11 6.15.* semver | Not specified |
| CNA | Linux | Linux | unaffected 6.16.2 6.16.* semver | Not specified |
| CNA | Linux | Linux | unaffected 6.17 * original_commit_for_fix | Not specified |
References
| Reference | Source | Link | Tags |
|---|---|---|---|
| git.kernel.org/stable/c/cddea0c721106ea480371412d8de21705eb27376 | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| git.kernel.org/stable/c/53a0249d68a210c16e961b83adfa82f94ee0a53d | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | Patch |
| git.kernel.org/stable/c/9680c58675b82348ab84d387e4fa727f7587e1a0 | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | Patch |
| git.kernel.org/stable/c/b5f46951e62377b6e406fadc18bc3c5bdf1632a7 | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | Patch |
| git.kernel.org/stable/c/557c024ca7250bb65ae60f16c02074106c2f197b | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | Patch |
| CVE Program record | CVE.ORG | www.cve.org | canonical |
| NVD vulnerability detail | NVD | nvd.nist.gov | canonical, analysis |
No vendor comments have been submitted for this CVE.
There are currently no legacy QID mappings associated with this CVE.