CVE-2023-53564

ocfs2: fix defrag path triggering jbd2 ASSERT

published October 4, 2025

CVSS
—
EPSS
0%
Percentile
3.5
In the wild
Unconfirmed
What it is

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

ocfs2: fix defrag path triggering jbd2 ASSERT

code path:

ocfs2_ioctl_move_extents

ocfs2_move_extents

ocfs2_defrag_extent

__ocfs2_move_extent

+ ocfs2_journal_access_di

+ ocfs2_split_extent //sub-paths call jbd2_journal_restart

+ ocfs2_journal_dirty //crash by jbs2 ASSERT

crash stacks:

PID: 11297 TASK: ffff974a676dcd00 CPU: 67 COMMAND: "defragfs.ocfs2"

#0 [ffffb25d8dad3900] machine_kexec at ffffffff8386fe01

#1 [ffffb25d8dad3958] __crash_kexec at ffffffff8395959d

#2 [ffffb25d8dad3a20] crash_kexec at ffffffff8395a45d

#3 [ffffb25d8dad3a38] oops_end at ffffffff83836d3f

#4 [ffffb25d8dad3a58] do_trap at ffffffff83833205

#5 [ffffb25d8dad3aa0] do_invalid_op at ffffffff83833aa6

#6 [ffffb25d8dad3ac0] invalid_op at ffffffff84200d18

[exception RIP: jbd2_journal_dirty_metadata+0x2ba]

RIP: ffffffffc09ca54a RSP: ffffb25d8dad3b70 RFLAGS: 00010207

RAX: 0000000000000000 RBX: ffff9706eedc5248 RCX: 0000000000000000

RDX: 0000000000000001 RSI: ffff97337029ea28 RDI: ffff9706eedc5250

RBP: ffff9703c3520200 R8: 000000000f46b0b2 R9: 0000000000000000

R10: 0000000000000001 R11: 00000001000000fe R12: ffff97337029ea28

R13: 0000000000000000 R14: ffff9703de59bf60 R15: ffff9706eedc5250

ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018

#7 [ffffb25d8dad3ba8] ocfs2_journal_dirty at ffffffffc137fb95 [ocfs2]

#8 [ffffb25d8dad3be8] __ocfs2_move_extent at ffffffffc139a950 [ocfs2]

#9 [ffffb25d8dad3c80] ocfs2_defrag_extent at ffffffffc139b2d2 [ocfs2]

Analysis

This bug has the same root cause of 'commit 7f27ec978b0e ("ocfs2: call

ocfs2_journal_access_di() before ocfs2_journal_dirty() in

ocfs2_write_end_nolock()")'. For this bug, jbd2_journal_restart() is

called by ocfs2_split_extent() during defragmenting.

How to fix

For ocfs2_split_extent() can handle journal operations totally by itself.

Caller doesn't need to call journal access/dirty pair, and caller only

needs to call journal start/stop pair. The fix method is to remove

journal access/dirty from __ocfs2_move_extent().

The discussion for this patch:

https://oss.oracle.com/pipermail/ocfs2-devel/2023-February/000647.html

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00145 · 3.5th percentile
Published
2025-10-04T15:17Z
EPSS history
Timeline
  • 04 OCT 15:17Z
    ocfs2: fix defrag path triggering jbd2 ASSERT
    cvelistv5