{"api_version":"1","generated_at":"2026-04-23T07:57:20+00:00","cve":"CVE-2025-38710","urls":{"html":"https://cve.report/CVE-2025-38710","api":"https://cve.report/api/cve/CVE-2025-38710.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2025-38710","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2025-38710"},"summary":{"title":"gfs2: Validate i_depth for exhash directories","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ngfs2: Validate i_depth for exhash directories\n\nA fuzzer test introduced corruption that ends up with a depth of 0 in\ndir_e_read(), causing an undefined shift by 32 at:\n\n  index = hash >> (32 - dip->i_depth);\n\nAs calculated in an open-coded way in dir_make_exhash(), the minimum\ndepth for an exhash directory is ilog2(sdp->sd_hash_ptrs) and 0 is\ninvalid as sdp->sd_hash_ptrs is fixed as sdp->bsize / 16 at mount time.\n\nSo we can avoid the undefined behaviour by checking for depth values\nlower than the minimum in gfs2_dinode_in(). Values greater than the\nmaximum are already being checked for there.\n\nAlso switch the calculation in dir_make_exhash() to use ilog2() to\nclarify how the depth is calculated.\n\nTested with the syzkaller repro.c and xfstests '-g quick'.","state":"PUBLISHED","assigner":"Linux","published_at":"2025-09-04 16:15:40","updated_at":"2026-04-11 13:16:35"},"problem_types":["NVD-CWE-noinfo"],"metrics":[{"version":"3.1","source":"nvd@nist.gov","type":"Primary","score":"5.5","severity":"MEDIUM","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","baseScore":5.5,"baseSeverity":"MEDIUM","attackVector":"LOCAL","attackComplexity":"LOW","privilegesRequired":"LOW","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"NONE","availabilityImpact":"HIGH"}}],"references":[{"url":"https://git.kernel.org/stable/c/cddea0c721106ea480371412d8de21705eb27376","name":"https://git.kernel.org/stable/c/cddea0c721106ea480371412d8de21705eb27376","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/53a0249d68a210c16e961b83adfa82f94ee0a53d","name":"https://git.kernel.org/stable/c/53a0249d68a210c16e961b83adfa82f94ee0a53d","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":["Patch"],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/9680c58675b82348ab84d387e4fa727f7587e1a0","name":"https://git.kernel.org/stable/c/9680c58675b82348ab84d387e4fa727f7587e1a0","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":["Patch"],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/b5f46951e62377b6e406fadc18bc3c5bdf1632a7","name":"https://git.kernel.org/stable/c/b5f46951e62377b6e406fadc18bc3c5bdf1632a7","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":["Patch"],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/557c024ca7250bb65ae60f16c02074106c2f197b","name":"https://git.kernel.org/stable/c/557c024ca7250bb65ae60f16c02074106c2f197b","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":["Patch"],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2025-38710","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-38710","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 9a0045088d888c9c539c8c626a366cb52c0fbdab cddea0c721106ea480371412d8de21705eb27376 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 9a0045088d888c9c539c8c626a366cb52c0fbdab 53a0249d68a210c16e961b83adfa82f94ee0a53d git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 9a0045088d888c9c539c8c626a366cb52c0fbdab b5f46951e62377b6e406fadc18bc3c5bdf1632a7 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 9a0045088d888c9c539c8c626a366cb52c0fbdab 9680c58675b82348ab84d387e4fa727f7587e1a0 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 9a0045088d888c9c539c8c626a366cb52c0fbdab 557c024ca7250bb65ae60f16c02074106c2f197b git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2.6.26","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 2.6.26 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.134 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.43 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.15.11 6.15.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.16.2 6.16.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.17 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[{"cve_year":"2025","cve_id":"38710","vulnerable":"1","versionEndIncluding":"","cpe1":"cpe","cpe2":"2.3","cpe3":"o","cpe4":"linux","cpe5":"linux_kernel","cpe6":"*","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"*","cpe11":"*","cpe12":"*","cpe13":"*"}],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["fs/gfs2/dir.c","fs/gfs2/glops.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"cddea0c721106ea480371412d8de21705eb27376","status":"affected","version":"9a0045088d888c9c539c8c626a366cb52c0fbdab","versionType":"git"},{"lessThan":"53a0249d68a210c16e961b83adfa82f94ee0a53d","status":"affected","version":"9a0045088d888c9c539c8c626a366cb52c0fbdab","versionType":"git"},{"lessThan":"b5f46951e62377b6e406fadc18bc3c5bdf1632a7","status":"affected","version":"9a0045088d888c9c539c8c626a366cb52c0fbdab","versionType":"git"},{"lessThan":"9680c58675b82348ab84d387e4fa727f7587e1a0","status":"affected","version":"9a0045088d888c9c539c8c626a366cb52c0fbdab","versionType":"git"},{"lessThan":"557c024ca7250bb65ae60f16c02074106c2f197b","status":"affected","version":"9a0045088d888c9c539c8c626a366cb52c0fbdab","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["fs/gfs2/dir.c","fs/gfs2/glops.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"2.6.26"},{"lessThan":"2.6.26","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.134","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.43","versionType":"semver"},{"lessThanOrEqual":"6.15.*","status":"unaffected","version":"6.15.11","versionType":"semver"},{"lessThanOrEqual":"6.16.*","status":"unaffected","version":"6.16.2","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"6.17","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.134","versionStartIncluding":"2.6.26","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.43","versionStartIncluding":"2.6.26","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.15.11","versionStartIncluding":"2.6.26","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.16.2","versionStartIncluding":"2.6.26","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.17","versionStartIncluding":"2.6.26","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ngfs2: Validate i_depth for exhash directories\n\nA fuzzer test introduced corruption that ends up with a depth of 0 in\ndir_e_read(), causing an undefined shift by 32 at:\n\n  index = hash >> (32 - dip->i_depth);\n\nAs calculated in an open-coded way in dir_make_exhash(), the minimum\ndepth for an exhash directory is ilog2(sdp->sd_hash_ptrs) and 0 is\ninvalid as sdp->sd_hash_ptrs is fixed as sdp->bsize / 16 at mount time.\n\nSo we can avoid the undefined behaviour by checking for depth values\nlower than the minimum in gfs2_dinode_in(). Values greater than the\nmaximum are already being checked for there.\n\nAlso switch the calculation in dir_make_exhash() to use ilog2() to\nclarify how the depth is calculated.\n\nTested with the syzkaller repro.c and xfstests '-g quick'."}],"providerMetadata":{"dateUpdated":"2026-04-11T12:45:37.195Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/cddea0c721106ea480371412d8de21705eb27376"},{"url":"https://git.kernel.org/stable/c/53a0249d68a210c16e961b83adfa82f94ee0a53d"},{"url":"https://git.kernel.org/stable/c/b5f46951e62377b6e406fadc18bc3c5bdf1632a7"},{"url":"https://git.kernel.org/stable/c/9680c58675b82348ab84d387e4fa727f7587e1a0"},{"url":"https://git.kernel.org/stable/c/557c024ca7250bb65ae60f16c02074106c2f197b"}],"title":"gfs2: Validate i_depth for exhash directories","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2025-38710","datePublished":"2025-09-04T15:33:00.629Z","dateReserved":"2025-04-16T04:51:24.033Z","dateUpdated":"2026-04-11T12:45:37.195Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2025-09-04 16:15:40","lastModifiedDate":"2026-04-11 13:16:35","problem_types":["NVD-CWE-noinfo"],"metrics":{"cvssMetricV31":[{"source":"nvd@nist.gov","type":"Primary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","baseScore":5.5,"baseSeverity":"MEDIUM","attackVector":"LOCAL","attackComplexity":"LOW","privilegesRequired":"LOW","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"NONE","availabilityImpact":"HIGH"},"exploitabilityScore":1.8,"impactScore":3.6}]},"configurations":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.43","matchCriteriaId":"1936DB45-ECC5-4A1A-A924-0D4E14DFE578"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.13","versionEndExcluding":"6.15.11","matchCriteriaId":"BC242347-F722-43AE-B910-BE0B22386977"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.16","versionEndExcluding":"6.16.2","matchCriteriaId":"BD7C087D-2415-4521-B624-30003352F899"}]}]}]},"legacy_mitre":{"record":{"CveYear":"2025","CveId":"38710","Ordinal":"1","Title":"gfs2: Validate i_depth for exhash directories","CVE":"CVE-2025-38710","Year":"2025"},"notes":[{"CveYear":"2025","CveId":"38710","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\ngfs2: Validate i_depth for exhash directories\n\nA fuzzer test introduced corruption that ends up with a depth of 0 in\ndir_e_read(), causing an undefined shift by 32 at:\n\n  index = hash >> (32 - dip->i_depth);\n\nAs calculated in an open-coded way in dir_make_exhash(), the minimum\ndepth for an exhash directory is ilog2(sdp->sd_hash_ptrs) and 0 is\ninvalid as sdp->sd_hash_ptrs is fixed as sdp->bsize / 16 at mount time.\n\nSo we can avoid the undefined behaviour by checking for depth values\nlower than the minimum in gfs2_dinode_in(). Values greater than the\nmaximum are already being checked for there.\n\nAlso switch the calculation in dir_make_exhash() to use ilog2() to\nclarify how the depth is calculated.\n\nTested with the syzkaller repro.c and xfstests '-g quick'.","Type":"Description","Title":"gfs2: Validate i_depth for exhash directories"}]}}}