CVE-2022-50730

ext4: silence the warning when evicting inode with dioread_nolock

published December 24, 2025

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

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

ext4: silence the warning when evicting inode with dioread_nolock

When evicting an inode with default dioread_nolock, it could be raced by

the unwritten extents converting kworker after writeback some new

allocated dirty blocks. It convert unwritten extents to written, the

extents could be merged to upper level and free extent blocks, so it

could mark the inode dirty again even this inode has been marked

I_FREEING. But the inode->i_io_list check and warning in

ext4_evict_inode() missing this corner case. Fortunately,

ext4_evict_inode() will wait all extents converting finished before this

check, so it will not lead to inode use-after-free problem, every thing

is OK besides this warning. The WARN_ON_ONCE was originally designed

for finding inode use-after-free issues in advance, but if we add

current dioread_nolock case in, it will become not quite useful, so fix

this warning by just remove this check.

======

WARNING: CPU: 7 PID: 1092 at fs/ext4/inode.c:227

ext4_evict_inode+0x875/0xc60

...

RIP: 0010:ext4_evict_inode+0x875/0xc60

...

Call Trace:

<TASK>

evict+0x11c/0x2b0

iput+0x236/0x3a0

do_unlinkat+0x1b4/0x490

__x64_sys_unlinkat+0x4c/0xb0

do_syscall_64+0x3b/0x90

entry_SYSCALL_64_after_hwframe+0x46/0xb0

RIP: 0033:0x7fa933c1115b

======

rm kworker

ext4_end_io_end()

vfs_unlink()

ext4_unlink()

ext4_convert_unwritten_io_end_vec()

ext4_convert_unwritten_extents()

ext4_map_blocks()

ext4_ext_map_blocks()

ext4_ext_try_to_merge_up()

__mark_inode_dirty()

check !I_FREEING

locked_inode_to_wb_and_lock_list()

iput()

iput_final()

evict()

ext4_evict_inode()

truncate_inode_pages_final() //wait release io_end

inode_io_list_move_locked()

ext4_release_io_end()

trigger WARN_ON_ONCE()

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00244 · 14.8th percentile
Published
2025-12-24T12:22Z
EPSS history
Timeline
  • 24 DEC 12:22Z
    ext4: silence the warning when evicting inode with dioread_nolock
    cvelistv5