CVE Database›Document archive›CVE-2025-22113

CVE-2025-22113

kernel: ext4: avoid journaling sb update on error if journal is destroying

Loading…

Severity

Moderate

Red Hat Product Security

7.1

CVSS 3.1

Review impact separately from score.

Published · April 16, 2025

Updated · October 30, 2026

Description

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

ext4: avoid journaling sb update on error if journal is destroying

Presently we always BUG_ON if trying to start a transaction on a journal marked with JBD2_UNMOUNT, since this should never happen. However, while ltp running stress tests, it was observed that in case of some error handling paths, it is possible for update_super_work to start a transaction after the journal is destroyed eg:

(umount) ext4_kill_sb kill_block_super generic_shutdown_super sync_filesystem /* commits all txns / evict_inodes / might start a new txn / ext4_put_super flush_work(&sbi->s_sb_upd_work) / flush the workqueue */ jbd2_journal_destroy journal_kill_thread journal->j_flags |= JBD2_UNMOUNT; jbd2_journal_commit_transaction jbd2_journal_get_descriptor_buffer jbd2_journal_bmap ext4_journal_bmap ext4_map_blocks ... ext4_inode_error ext4_handle_error schedule_work(&sbi->s_sb_upd_work)

                                           /* work queue kicks in */
                                           update_super_work
                                             jbd2_journal_start
                                               start_this_handle
                                                 BUG_ON(journal->j_flags &
                                                        JBD2_UNMOUNT)

Hence, introduce a new mount flag to indicate journal is destroying and only do a journaled (and deferred) update of sb if this flag is not set. Otherwise, just fallback to an un-journaled commit.

Further, in the journal destroy path, we have the following sequence:

  1. Set mount flag indicating journal is destroying
  2. force a commit and wait for it
  3. flush pending sb updates

This sequence is important as it ensures that, after this point, there is no sb update that might be journaled so it is safe to update the sb outside the journal. (To avoid race discussed in 2d01ddc86606)

Also, we don't need a similar check in ext4_grp_locked_error since it is only called from mballoc and AFAICT it would be always valid to schedule work here.

Statement

This vulnerability is rated as Moderate severity because it requires local access to trigger an error condition during ext4 filesystem teardown, resulting in a kernel crash (denial of service) rather than privilege escalation or arbitrary code execution. The flaw manifests when unmounting an ext4 volume if an error path schedules a deferred superblock write while the journal is already being destroyed. Red Hat Enterprise Linux 8 is not affected as it lacks the upstream commit that introduced the issue.

CVSS score applicability

The CVSS score(s) listed for this vulnerability do not reflect the associated product's status, and are included for informational purposes to better understand the severity of this vulnerability.

Mitigation

No mitigation is specified in collected source.

CVSS / CWE

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

CWE-99 · Improper Control of Resource Identifiers ('Resource Injection')