製品・ソフトウェアに関する情報
LinuxのLinux Kernelにおけるリソースのロックに関する脆弱性
Title LinuxのLinux Kernelにおけるリソースのロックに関する脆弱性
Summary

Linuxカーネルにおいて、jbd2_journal_cancel_revoke()のデッドロックを修正する重要な変更が行われました。この問題は、フォリオロックとバッファロックの取得順序の不整合により、ファイルシステムのブロックサイズがページサイズより小さい場合にABBAデッドロックが発生することによるものでした。本修正では、渡されたbuffer_headがbdevに属していない場合にのみ__find_get_block_nonatomic()を呼び出し、ロックの競合を防止しています。これにより、ファイルシステムの安定性と信頼性が向上します。

Possible impacts ・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 ・当該ソフトウェアが扱う情報について、書き換えは発生しません。 ・当該ソフトウェアが完全に停止する可能性があります。 
Solution

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。

Publication Date May 27, 2026, midnight
Registration Date June 17, 2026, 3:39 p.m.
Last Update June 17, 2026, 3:39 p.m.
CVSS3.0 : 警告
Score 5.5
Vector CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Affected System
Linux
Linux Kernel 6.12.31 以上 6.12.86 未満
Linux Kernel 6.14.9 以上 6.15 未満
Linux Kernel 6.15
Linux Kernel 6.15.1 以上 6.18.27 未満
Linux Kernel 6.19 以上 7.0.4 未満
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
Change Log
No Changed Details Date of change
1 [2026年06月17日]
  掲載
June 17, 2026, 3:39 p.m.

NVD Vulnerability Information
CVE-2026-46061
Summary

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

jbd2: fix deadlock in jbd2_journal_cancel_revoke()

Commit f76d4c28a46a ("fs/jbd2: use sleeping version of
__find_get_block()") changed jbd2_journal_cancel_revoke() to use
__find_get_block_nonatomic() which holds the folio lock instead of
i_private_lock. This breaks the lock ordering (folio -> buffer) and
causes an ABBA deadlock when the filesystem blocksize < pagesize:

T1 T2
ext4_mkdir()
ext4_init_new_dir()
ext4_append()
ext4_getblk()
lock_buffer() <- A
sync_blockdev()
blkdev_writepages()
writeback_iter()
writeback_get_folio()
folio_lock() <- B
ext4_journal_get_create_access()
jbd2_journal_cancel_revoke()
__find_get_block_nonatomic()
folio_lock() <- B
block_write_full_folio()
lock_buffer() <- A

This can occasionally cause generic/013 to hang.

Fix by only calling __find_get_block_nonatomic() when the passed
buffer_head doesn't belong to the bdev, which is the only case that we
need to look up its bdev alias. Otherwise, the lookup is redundant since
the found buffer_head is equal to the one we passed in.

Publication Date May 27, 2026, 11:17 p.m.
Registration Date May 28, 2026, 4:13 a.m.
Last Update May 27, 2026, 11:48 p.m.
Related information, measures and tools
Common Vulnerabilities List