[<prev] [next>] [day] [month] [year] [list]
Message-ID: <2025091149-CVE-2025-39782-7980@gregkh>
Date: Thu, 11 Sep 2025 18:57:00 +0200
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...nel.org>
Subject: CVE-2025-39782: jbd2: prevent softlockup in jbd2_log_do_checkpoint()
From: Greg Kroah-Hartman <gregkh@...nel.org>
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
jbd2: prevent softlockup in jbd2_log_do_checkpoint()
Both jbd2_log_do_checkpoint() and jbd2_journal_shrink_checkpoint_list()
periodically release j_list_lock after processing a batch of buffers to
avoid long hold times on the j_list_lock. However, since both functions
contend for j_list_lock, the combined time spent waiting and processing
can be significant.
jbd2_journal_shrink_checkpoint_list() explicitly calls cond_resched() when
need_resched() is true to avoid softlockups during prolonged operations.
But jbd2_log_do_checkpoint() only exits its loop when need_resched() is
true, relying on potentially sleeping functions like __flush_batch() or
wait_on_buffer() to trigger rescheduling. If those functions do not sleep,
the kernel may hit a softlockup.
watchdog: BUG: soft lockup - CPU#3 stuck for 156s! [kworker/u129:2:373]
CPU: 3 PID: 373 Comm: kworker/u129:2 Kdump: loaded Not tainted 6.6.0+ #10
Hardware name: Huawei TaiShan 2280 /BC11SPCD, BIOS 1.27 06/13/2017
Workqueue: writeback wb_workfn (flush-7:2)
pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : native_queued_spin_lock_slowpath+0x358/0x418
lr : jbd2_log_do_checkpoint+0x31c/0x438 [jbd2]
Call trace:
native_queued_spin_lock_slowpath+0x358/0x418
jbd2_log_do_checkpoint+0x31c/0x438 [jbd2]
__jbd2_log_wait_for_space+0xfc/0x2f8 [jbd2]
add_transaction_credits+0x3bc/0x418 [jbd2]
start_this_handle+0xf8/0x560 [jbd2]
jbd2__journal_start+0x118/0x228 [jbd2]
__ext4_journal_start_sb+0x110/0x188 [ext4]
ext4_do_writepages+0x3dc/0x740 [ext4]
ext4_writepages+0xa4/0x190 [ext4]
do_writepages+0x94/0x228
__writeback_single_inode+0x48/0x318
writeback_sb_inodes+0x204/0x590
__writeback_inodes_wb+0x54/0xf8
wb_writeback+0x2cc/0x3d8
wb_do_writeback+0x2e0/0x2f8
wb_workfn+0x80/0x2a8
process_one_work+0x178/0x3e8
worker_thread+0x234/0x3b8
kthread+0xf0/0x108
ret_from_fork+0x10/0x20
So explicitly call cond_resched() in jbd2_log_do_checkpoint() to avoid
softlockup.
The Linux kernel CVE team has assigned CVE-2025-39782 to this issue.
Affected and fixed versions
===========================
Fixed in 5.4.297 with commit f683d611518d30334813eecf9a8c687453e2800e
Fixed in 5.10.241 with commit f7ee8fd689e6d534f9fd2494b9266f7998082e65
Fixed in 5.15.190 with commit 84ff98c1ea19acd3f9389e4bb6061364e943f85e
Fixed in 6.1.149 with commit 26cb9aad94cb1811d8fae115594cc71fa3d91ab0
Fixed in 6.6.103 with commit 41f40038de62e8306897cf6840791b268996432a
Fixed in 6.12.44 with commit 429d50cbaff45090d52a1ea850d5de8c14881ee7
Fixed in 6.16.4 with commit 3faac5e1d14c63260fd1bf789d96bde3ab3d9e54
Fixed in 6.17-rc3 with commit 9d98cf4632258720f18265a058e62fde120c0151
Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.
Unaffected versions might change over time as fixes are backported to
older supported kernel versions. The official CVE entry at
https://cve.org/CVERecord/?id=CVE-2025-39782
will be updated if fixes are backported, please check that for the most
up to date information about this issue.
Affected files
==============
The file(s) affected by this issue are:
fs/jbd2/checkpoint.c
Mitigation
==========
The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes. Individual
changes are never tested alone, but rather are part of a larger kernel
release. Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all. If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
https://git.kernel.org/stable/c/f683d611518d30334813eecf9a8c687453e2800e
https://git.kernel.org/stable/c/f7ee8fd689e6d534f9fd2494b9266f7998082e65
https://git.kernel.org/stable/c/84ff98c1ea19acd3f9389e4bb6061364e943f85e
https://git.kernel.org/stable/c/26cb9aad94cb1811d8fae115594cc71fa3d91ab0
https://git.kernel.org/stable/c/41f40038de62e8306897cf6840791b268996432a
https://git.kernel.org/stable/c/429d50cbaff45090d52a1ea850d5de8c14881ee7
https://git.kernel.org/stable/c/3faac5e1d14c63260fd1bf789d96bde3ab3d9e54
https://git.kernel.org/stable/c/9d98cf4632258720f18265a058e62fde120c0151
Powered by blists - more mailing lists