KernelScan.io

HIGH Introduced in 4.0

ocfs2 DioOrphanSlot UAF

CVE-2026-90204

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

KernelScan AI6.7MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: ocfs2: validate DIO orphan slot during inode read [BUG] A corrupted append-DIO dinode (high byte at offset 0xa1 corrupted from 0 to 1) can carry an i_dio_orphaned_slot outside the mounted filesystem slot range and trigger a use-after-free error: BUG: KASAN: slab-use-after-free in ocfs2_get_system_file_inode+0x780/0x820 fs/ocfs2/sysfile.c:102 Read of size 8 at addr ffff88800b767c00 by task kworker/u8:3/85 Call Trace: ... ocfs2_get_system_file_inode+0x780/0x820 fs/ocfs2/sysfile.c:102 ocfs2_wipe_inode+0x292/0xf70 fs/ocfs2/inode.c:840 ocfs2_delete_inode fs/ocfs2/inode.c:1155 [inline] ocfs2_evict_inode+0x6c9/0x1170 fs/ocfs2/inode.c:1295 evict+0x38e/0x8f0 fs/inode.c:810 iput_final fs/inode.c:1914 [inline] iput fs/inode.c:1966 [inline] iput+0x55b/0x8b0 fs/inode.c:1926 ocfs2_recover_orphans+0x610/0xe40 fs/ocfs2/journal.c:2374 ocfs2_complete_recovery+0x5af/0xd00 fs/ocfs2/journal.c:1373 ... [CAUSE] ocfs2_del_inode_from_orphan() uses i_dio_orphaned_slot to index the slot-local system inode cache. The dinode validator does not check this active slot, so an out-of-range value produces an invalid cache entry pointer that is dereferenced as an inode pointer. [FIX] Reject an active i_dio_orphaned_slot outside the slot range during dinode validation, before DIO orphan recovery can consume it.

02

Engine v0.6.0

Risk summary

A corrupted ocfs2 on-disk inode with an out-of-range DIO orphan slot value causes a use-after-free when the kernel processes the inode during orphan recovery. The bug is triggered by mounting a crafted or corrupted ocfs2 filesystem image, which requires root privileges. Impact includes kernel memory corruption, potential privilege escalation from root to kernel, and system crash.

Affectedfs/ocfs2/inode.c (ocfs2 filesystem)

Vulnerability analysis

A corrupted ocfs2 on-disk inode can carry a DIO orphan slot value outside the filesystem's valid slot range. The inode validator did not check this field, so when the kernel later uses it to index an internal system inode cache during orphan recovery, the out-of-range index produces a stale pointer that is dereferenced as an inode, causing a use-after-free. The fix adds a bounds check during dinode validation that rejects any inode whose DIO orphan flag is active but whose slot number exceeds the filesystem's slot count, preventing the corrupted inode from being processed. The vulnerability is reachable by mounting a corrupted or maliciously crafted ocfs2 filesystem image, which requires real root privileges (CAP_SYS_ADMIN in the init namespace) since ocfs2 cannot be mounted inside user namespaces.

03

BranchIntroducedFixed inPatch commit
6.124.06.12.1148f7a2c5cf23d
6.184.06.18.52e35fa6eb4d2a
6.64.06.6.160eacdd27ca829
7.24.07.2.6418e0ae42fa7
mainline4.07.3bb88131c9831

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Affected — no CIP fix yet (latest 6.12.112-cip33)
cip/6.1Affected — no CIP fix yet (latest 6.1.189-cip61)
cip/6.1-rtAffected — no CIP fix yet (latest 6.1.189-cip61-rt32)
cip/5.10Affected — no CIP fix yet (latest 5.10.271-cip78)
cip/5.10-rtAffected — no CIP fix yet (latest 5.10.268-cip77-rt34)
cip/4.19Affected — no CIP fix yet (latest 4.19.325-cip136)
cip/4.19-rtAffected — no CIP fix yet (latest 4.19.325-cip136-rt50)
cip/4.4Affected — no CIP fix yet (latest 4.4.302-cip115)
cip/4.4-rtAffected — no CIP fix yet (latest 4.4.302-cip115-rt63)