CVE-2026-72160

ocfs2: reject dinodes with non-canonical i_mode type

State
Published
Severity
8.8 High
Published
Aug 15, 2026
Updated
Oct 16, 2026
Reserved
Aug 9, 2026

Read the record on cve.org

Description

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

ocfs2: reject dinodes with non-canonical i_mode type

Patch series "ocfs2: harden inode validators against forged metadata", v2.

This series adds three structural checks to OCFS2 dinode validation so malformed on-disk fields are rejected before ocfs2_populate_inode() copies them into the in-core inode.

The checks cover:

- i_mode values whose type bits do not name a canonical POSIX file type; - non-device dinodes whose id1.dev1.i_rdev field is non-zero; and - non-inline dinodes that claim non-zero i_size while i_clusters is zero, covering directories unconditionally and regular files on non-sparse volumes.

The normal read path reports these through ocfs2_error(), matching the existing suballoc-slot, inline-data, chain-list, and refcount checks. The online filecheck path uses the same structural predicates but keeps its own reporting contract, returning OCFS2_FILECHECK_ERR_INVALIDINO instead of calling ocfs2_error().

This patch (of 3):

ocfs2_validate_inode_block() currently accepts any non-zero i_mode value. ocfs2_populate_inode() then copies that mode verbatim into inode->i_mode and dispatches on i_mode & S_IFMT to the file/dir/symlink/special_file iops; an unrecognised type falls through to ocfs2_special_file_iops and init_special_inode().

Reject dinodes whose type bits do not name one of the seven canonical POSIX file types. Use fs_umode_to_ftype(), the same generic file-type conversion helper OCFS2 already uses for directory entries, so the accepted inode type set matches the kernel file-type vocabulary instead of open-coding a local switch.

Apply the same structural check to the online filecheck read path. filecheck keeps its own error namespace, so it reports malformed i_mode through the filecheck logger and OCFS2_FILECHECK_ERR_INVALIDINO instead of calling ocfs2_error(), but it must not allow a malformed dinode to proceed into ocfs2_populate_inode().

Scores

CVSSScoreVectorSource
3.18.8 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • b657c95c11088d77fc1bfc9c84d940f778bf9d12 to before 2e3aac33988ef4e4170141db8e995693ea38357cAffected
  • b657c95c11088d77fc1bfc9c84d940f778bf9d12 to before fb024ea29f6cb1f01745e5f2e31646f3acb9aa6fAffected
  • b657c95c11088d77fc1bfc9c84d940f778bf9d12 to before 157d31ef45038d89cd19620105e082d43c8e41e0Affected
  • b657c95c11088d77fc1bfc9c84d940f778bf9d12 to before a5b555bcabbb0aff8745ad181768eaf9d964c1eeAffected
  • b657c95c11088d77fc1bfc9c84d940f778bf9d12 to before 82afe13558354390d8a592a5334d5f4fd72c0e5cAffected
  • b657c95c11088d77fc1bfc9c84d940f778bf9d12 to before 4db3b6a2a8ecf2a89d26a4090ace4072c6fad050Affected
  • b657c95c11088d77fc1bfc9c84d940f778bf9d12 to before b858f2d57cfc9d57ce61b86051d603dc0ebccd40Affected
  • b657c95c11088d77fc1bfc9c84d940f778bf9d12 to before 5366a017099c6a3c443be908a05f26fd72af12a1Affected
LinuxLinux
  • 2.6.29Affected
  • before 2.6.29Not affected
  • 5.10.261 through 5.10.*Not affected
  • 5.15.212 through 5.15.*Not affected
  • 6.1.178 through 6.1.*Not affected
  • 6.6.145 through 6.6.*Not affected
  • 6.12.97 through 6.12.*Not affected
  • 6.18.40 through 6.18.*Not affected
  • 7.1.5 through 7.1.*Not affected
  • 7.2 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.