CVE Catalog

CVE-2026-46061

MediumCVSS 5.5
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.09%

1th percentile - higher than 1% of all known CVEs

Summary

A vulnerability has been identified in the Linux kernel that leads to deadlock in the jbd2_journal_cancel_revoke() function. A change introduced in commit f76d4c28a46a breaks lock ordering, which can lead to an ABBA situation when the filesystem blocksize is smaller than the pagesize.

Risk Assessment

This vulnerability can lead to system hangs, affecting service availability and potentially causing downtime for applications relying on the filesystem.

Recommendation

It is recommended to update the Linux kernel to the version that includes the fix to avoid deadlock issues.

Original NVD description (English source)

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.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS