CVE-2026-80644 PUBLISHED

ocfs2: don't BUG_ON an invalid journal dinode

Assigner: Linux
Reserved: 26.08.2026 Published: 28.08.2026 Updated: 28.08.2026

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

ocfs2: don't BUG_ON an invalid journal dinode

[BUG] A fuzzed OCFS2 image can corrupt the current slot journal dinode while mount is still in progress. The mount path first reports the invalid journal block and then crashes in shutdown:

kernel BUG at fs/ocfs2/journal.c:1034! Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTI RIP: 0010:ocfs2_journal_toggle_dirty+0x2d6/0x340 fs/ocfs2/journal.c:1034 Call Trace: ocfs2_journal_shutdown+0x414/0xc30 fs/ocfs2/journal.c:1116 ocfs2_mount_volume fs/ocfs2/super.c:1785 [inline] ocfs2_fill_super+0x30a9/0x3cd0 fs/ocfs2/super.c:1083 get_tree_bdev_flags+0x38b/0x640 fs/super.c:1698 get_tree_bdev+0x24/0x40 fs/super.c:1721 ocfs2_get_tree+0x21/0x30 fs/ocfs2/super.c:1184 vfs_get_tree+0x9a/0x370 fs/super.c:1758 fc_mount fs/namespace.c:1199 [inline] do_new_mount_fc fs/namespace.c:3642 [inline] do_new_mount fs/namespace.c:3718 [inline] path_mount+0x5b8/0x1ea0 fs/namespace.c:4028 do_mount fs/namespace.c:4041 [inline] __do_sys_mount fs/namespace.c:4229 [inline] __se_sys_mount fs/namespace.c:4206 [inline] __x64_sys_mount+0x282/0x320 fs/namespace.c:4206 ...

[CAUSE] ocfs2_journal_toggle_dirty() used to return -EIO when journal->j_bh no longer contained a valid dinode, because the startup and shutdown paths already handled that failure. Commit 10995aa2451a ("ocfs2: Morph the haphazard OCFS2_IS_VALID_DINODE() checks.") changed the check to a BUG_ON() under the assumption that the journal dinode had already been validated. That turns an unexpected invalid journal dinode during mount teardown into a kernel crash instead of a normal mount failure.

[FIX] Replace the BUG_ON() with WARN_ON() and return -EIO. This keeps the invariant warning for debugging, but restores the original behavior of failing startup or shutdown cleanly instead of panicking the kernel.

Product Status

Vendor Linux
Product Linux
Versions Default: unaffected
  • affected from 10995aa2451afa20b721cc7de856cae1a13dba57 to bf1d59cf2ac8a1730607ebaa0bc0dc6d00f197d0 (excl.)
  • affected from 10995aa2451afa20b721cc7de856cae1a13dba57 to 86509c5296fe46ad6bcdd83931a53c2c6b7913a8 (excl.)
  • affected from 10995aa2451afa20b721cc7de856cae1a13dba57 to 12c32a7350b670aaaaf2e01583d8648ec0c9755c (excl.)
  • affected from 10995aa2451afa20b721cc7de856cae1a13dba57 to b460f8d01a12061853d02c8fb693fb42450acd7d (excl.)
  • affected from 10995aa2451afa20b721cc7de856cae1a13dba57 to a06eec15596e5801bad59ad16cd2bf4f0fa839a1 (excl.)
  • affected from 10995aa2451afa20b721cc7de856cae1a13dba57 to 3852478d34c7baa490ba9c7374ee901a56eea577 (excl.)
  • affected from 10995aa2451afa20b721cc7de856cae1a13dba57 to 5b33f99f3e48465bd93219495381a5aef4fa967f (excl.)
  • affected from 10995aa2451afa20b721cc7de856cae1a13dba57 to c0438198c28b1d22c272751af5e717c11d9fa8dd (excl.)
Vendor Linux
Product Linux
Versions Default: affected
  • Version 2.6.29 is affected
  • unaffected from 0 to 2.6.29 (excl.)
  • unaffected from 5.10.261 to 5.10.* (incl.)
  • unaffected from 5.15.212 to 5.15.* (incl.)
  • unaffected from 6.1.178 to 6.1.* (incl.)
  • unaffected from 6.6.145 to 6.6.* (incl.)
  • unaffected from 6.12.97 to 6.12.* (incl.)
  • unaffected from 6.18.40 to 6.18.* (incl.)
  • unaffected from 7.1.5 to 7.1.* (incl.)
  • unaffected from 7.2 to * (incl.)

References