In the Linux kernel, the following vulnerability has been resolved:
jbd2: prevent softlockup in jbd2logdo_checkpoint()
Both jbd2logdocheckpoint() and jbd2journalshrinkcheckpointlist() periodically release jlistlock after processing a batch of buffers to avoid long hold times on the jlistlock. However, since both functions contend for jlist_lock, the combined time spent waiting and processing can be significant.
jbd2journalshrinkcheckpointlist() explicitly calls condresched() when needresched() is true to avoid softlockups during prolonged operations. But jbd2logdocheckpoint() only exits its loop when needresched() is true, relying on potentially sleeping functions like _flushbatch() or waitonbuffer() 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 wbworkfn (flush-7:2) pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : nativequeuedspinlockslowpath+0x358/0x418 lr : jbd2logdocheckpoint+0x31c/0x438 [jbd2] Call trace: nativequeuedspinlockslowpath+0x358/0x418 jbd2logdocheckpoint+0x31c/0x438 [jbd2] jbd2logwaitforspace+0xfc/0x2f8 [jbd2] addtransactioncredits+0x3bc/0x418 [jbd2] startthishandle+0xf8/0x560 [jbd2] jbd2journalstart+0x118/0x228 [jbd2] _ext4journalstartsb+0x110/0x188 [ext4] ext4dowritepages+0x3dc/0x740 [ext4] ext4writepages+0xa4/0x190 [ext4] dowritepages+0x94/0x228 _writebacksingleinode+0x48/0x318 writebacksbinodes+0x204/0x590 _writebackinodeswb+0x54/0xf8 wbwriteback+0x2cc/0x3d8 wbdowriteback+0x2e0/0x2f8 wbworkfn+0x80/0x2a8 processonework+0x178/0x3e8 workerthread+0x234/0x3b8 kthread+0xf0/0x108 retfrom_fork+0x10/0x20
So explicitly call condresched() in jbd2logdocheckpoint() to avoid softlockup.
{ "vanir_signatures": [ { "id": "CVE-2025-39782-087f48b2", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@41f40038de62e8306897cf6840791b268996432a", "deprecated": false, "signature_version": "v1", "signature_type": "Line", "digest": { "threshold": 0.9, "line_hashes": [ "221723363159853418278842823787274038474", "79315697898416093471832035766994949656", "228484207060224504410397393196650451189", "251105173974052369482734923316442791872" ] }, "target": { "file": "fs/jbd2/checkpoint.c" } }, { "id": "CVE-2025-39782-1ba1202b", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f683d611518d30334813eecf9a8c687453e2800e", "deprecated": false, "signature_version": "v1", "signature_type": "Line", "digest": { "threshold": 0.9, "line_hashes": [ "221723363159853418278842823787274038474", "79315697898416093471832035766994949656", "228484207060224504410397393196650451189", "251105173974052369482734923316442791872" ] }, "target": { "file": "fs/jbd2/checkpoint.c" } }, { "id": "CVE-2025-39782-2243e506", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@84ff98c1ea19acd3f9389e4bb6061364e943f85e", "deprecated": false, "signature_version": "v1", "signature_type": "Line", "digest": { "threshold": 0.9, "line_hashes": [ "221723363159853418278842823787274038474", "79315697898416093471832035766994949656", "228484207060224504410397393196650451189", "251105173974052369482734923316442791872" ] }, "target": { "file": "fs/jbd2/checkpoint.c" } }, { "id": "CVE-2025-39782-34e61c33", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@429d50cbaff45090d52a1ea850d5de8c14881ee7", "deprecated": false, "signature_version": "v1", "signature_type": "Line", "digest": { "threshold": 0.9, "line_hashes": [ "221723363159853418278842823787274038474", "79315697898416093471832035766994949656", "228484207060224504410397393196650451189", "251105173974052369482734923316442791872" ] }, "target": { "file": "fs/jbd2/checkpoint.c" } }, { "id": "CVE-2025-39782-3fbe935d", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9d98cf4632258720f18265a058e62fde120c0151", "deprecated": false, "signature_version": "v1", "signature_type": "Function", "digest": { "length": 2367.0, "function_hash": "293788956010731002505061983560304583338" }, "target": { "file": "fs/jbd2/checkpoint.c", "function": "jbd2_log_do_checkpoint" } }, { "id": "CVE-2025-39782-730a70c9", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@26cb9aad94cb1811d8fae115594cc71fa3d91ab0", "deprecated": false, "signature_version": "v1", "signature_type": "Line", "digest": { "threshold": 0.9, "line_hashes": [ "221723363159853418278842823787274038474", "79315697898416093471832035766994949656", "228484207060224504410397393196650451189", "251105173974052369482734923316442791872" ] }, "target": { "file": "fs/jbd2/checkpoint.c" } }, { "id": "CVE-2025-39782-741e2121", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@84ff98c1ea19acd3f9389e4bb6061364e943f85e", "deprecated": false, "signature_version": "v1", "signature_type": "Function", "digest": { "length": 2367.0, "function_hash": "293788956010731002505061983560304583338" }, "target": { "file": "fs/jbd2/checkpoint.c", "function": "jbd2_log_do_checkpoint" } }, { "id": "CVE-2025-39782-96c5bb68", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f7ee8fd689e6d534f9fd2494b9266f7998082e65", "deprecated": false, "signature_version": "v1", "signature_type": "Line", "digest": { "threshold": 0.9, "line_hashes": [ "221723363159853418278842823787274038474", "79315697898416093471832035766994949656", "228484207060224504410397393196650451189", "251105173974052369482734923316442791872" ] }, "target": { "file": "fs/jbd2/checkpoint.c" } }, { "id": "CVE-2025-39782-9a7852b8", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@41f40038de62e8306897cf6840791b268996432a", "deprecated": false, "signature_version": "v1", "signature_type": "Function", "digest": { "length": 2367.0, "function_hash": "293788956010731002505061983560304583338" }, "target": { "file": "fs/jbd2/checkpoint.c", "function": "jbd2_log_do_checkpoint" } }, { "id": "CVE-2025-39782-a3177280", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3faac5e1d14c63260fd1bf789d96bde3ab3d9e54", "deprecated": false, "signature_version": "v1", "signature_type": "Function", "digest": { "length": 2367.0, "function_hash": "293788956010731002505061983560304583338" }, "target": { "file": "fs/jbd2/checkpoint.c", "function": "jbd2_log_do_checkpoint" } }, { "id": "CVE-2025-39782-b678ab8d", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f683d611518d30334813eecf9a8c687453e2800e", "deprecated": false, "signature_version": "v1", "signature_type": "Function", "digest": { "length": 2367.0, "function_hash": "293788956010731002505061983560304583338" }, "target": { "file": "fs/jbd2/checkpoint.c", "function": "jbd2_log_do_checkpoint" } }, { "id": "CVE-2025-39782-c2d374d9", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@26cb9aad94cb1811d8fae115594cc71fa3d91ab0", "deprecated": false, "signature_version": "v1", "signature_type": "Function", "digest": { "length": 2367.0, "function_hash": "293788956010731002505061983560304583338" }, "target": { "file": "fs/jbd2/checkpoint.c", "function": "jbd2_log_do_checkpoint" } }, { "id": "CVE-2025-39782-de0faa3e", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f7ee8fd689e6d534f9fd2494b9266f7998082e65", "deprecated": false, "signature_version": "v1", "signature_type": "Function", "digest": { "length": 2367.0, "function_hash": "293788956010731002505061983560304583338" }, "target": { "file": "fs/jbd2/checkpoint.c", "function": "jbd2_log_do_checkpoint" } }, { "id": "CVE-2025-39782-e35be34e", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9d98cf4632258720f18265a058e62fde120c0151", "deprecated": false, "signature_version": "v1", "signature_type": "Line", "digest": { "threshold": 0.9, "line_hashes": [ "221723363159853418278842823787274038474", "79315697898416093471832035766994949656", "228484207060224504410397393196650451189", "251105173974052369482734923316442791872" ] }, "target": { "file": "fs/jbd2/checkpoint.c" } }, { "id": "CVE-2025-39782-f0553ea5", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@429d50cbaff45090d52a1ea850d5de8c14881ee7", "deprecated": false, "signature_version": "v1", "signature_type": "Function", "digest": { "length": 2367.0, "function_hash": "293788956010731002505061983560304583338" }, "target": { "file": "fs/jbd2/checkpoint.c", "function": "jbd2_log_do_checkpoint" } }, { "id": "CVE-2025-39782-f8658168", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3faac5e1d14c63260fd1bf789d96bde3ab3d9e54", "deprecated": false, "signature_version": "v1", "signature_type": "Line", "digest": { "threshold": 0.9, "line_hashes": [ "221723363159853418278842823787274038474", "79315697898416093471832035766994949656", "228484207060224504410397393196650451189", "251105173974052369482734923316442791872" ] }, "target": { "file": "fs/jbd2/checkpoint.c" } } ] }