CVE-2026-31598CWE-362CWE-667

CVE-2026-31598

High · published April 24, 2026

CVSS v3.1
7.5
EPSS
0%
Percentile
36.8
In the wild
Unconfirmed
What it is

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

ocfs2: fix possible deadlock between unlink and dio_end_io_write

ocfs2_unlink takes orphan dir inode_lock first and then ip_alloc_sem,

while in ocfs2_dio_end_io_write, it acquires these locks in reverse order.

This creates an ABBA lock ordering violation on lock classes

ocfs2_sysfile_lock_key[ORPHAN_DIR_SYSTEM_INODE] and

ocfs2_file_ip_alloc_sem_key.

Lock Chain #0 (orphan dir inode_lock -> ip_alloc_sem):

ocfs2_unlink

ocfs2_prepare_orphan_dir

ocfs2_lookup_lock_orphan_dir

inode_lock(orphan_dir_inode) <- lock A

__ocfs2_prepare_orphan_dir

ocfs2_prepare_dir_for_insert

ocfs2_extend_dir

ocfs2_expand_inline_dir

down_write(&oi->ip_alloc_sem) <- Lock B

Lock Chain #1 (ip_alloc_sem -> orphan dir inode_lock):

ocfs2_dio_end_io_write

down_write(&oi->ip_alloc_sem) <- Lock B

ocfs2_del_inode_from_orphan()

inode_lock(orphan_dir_inode) <- Lock A

Deadlock Scenario:

CPU0 (unlink) CPU1 (dio_end_io_write)

------ ------

inode_lock(orphan_dir_inode)

down_write(ip_alloc_sem)

down_write(ip_alloc_sem)

inode_lock(orphan_dir_inode)

Since ip_alloc_sem is to protect allocation changes, which is unrelated

with operations in ocfs2_del_inode_from_orphan. So move

ocfs2_del_inode_from_orphan out of ip_alloc_sem to fix the deadlock.

The record
Technical detail
CVSS v3.1
7.5 · HIGH
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00435 · 36.8th percentile
Weaknesses
CWE-362 · Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition'); CWE-667 · Improper Locking
Published
2026-04-24T19:16Z
Affected products (5)
ProductVersionsFixed in
linux/linux_kernel≥ 4.6, < 6.6.1366.6.136
linux/linux_kernel≥ 6.7, < 6.12.836.12.83
linux/linux_kernel≥ 6.13, < 6.18.246.18.24
linux/linux_kernel≥ 6.19, < 6.19.146.19.14
linux/linux_kernel≥ 7.0, < 7.0.17.0.1
References (9)
EPSS history
Timeline
  • 24 APR 14:42Z
    ocfs2: fix possible deadlock between unlink and dio_end_io_write
    cvelistv5