ext4: skip extra isize expansion during mount to prevent deadlock
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.110, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: ext4: skip extra isize expansion during mount to prevent deadlock ext4_try_to_expand_extra_isize() is called from __ext4_mark_inode_dirty() while holding an active jbd2 handle. During mount (!SB_ACTIVE), the expand path may move xattrs to external blocks and release ea_inodes via iput(). When !SB_ACTIVE, iput() calls write_inode_now() which acquires s_writepages_rwsem, creating a circular lock dependency: s_writepages_rwsem --> jbd2_handle --> xattr_sem --> s_writepages_rwsem This can be triggered via: ext4_process_orphan() -> ext4_truncate() -> ext4_mark_inode_dirty() -> ext4_try_to_expand_extra_isize() or: ext4_evict_inode() -> ext4_mark_inode_dirty() -> ext4_try_to_expand_extra_isize() Skip expansion when !SB_ACTIVE. This is a minor loss of functionality (extra isize won't grow for these inodes during mount), which e2fsck can resolve later if needed.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From c8585c6fcaf2011de54c3592e80a634a2b9e1a7f · fixed in 41897f1bcf4ace5f1f28d0be784b6f4f0e929641; From c8585c6fcaf2011de54c3592e80a634a2b9e1a7f · fixed in 9c3469377b1d8caba6bec6ef3c460810bbfb02cc; From c8585c6fcaf2011de54c3592e80a634a2b9e1a7f · fixed in 1dd4882dbdc8bfdf2182fa388883c143fac0902a; From c8585c6fcaf2011de54c3592e80a634a2b9e1a7f · fixed in 7ba09330d9ea6e996228316719eae812d7e04983; From c8585c6fcaf2011de54c3592e80a634a2b9e1a7f · fixed in c5e6434cc55f30220b228be237bb666351f9f4dd; From c8585c6fcaf2011de54c3592e80a634a2b9e1a7f · fixed in 7ace189b9ea79cf78df9c32b940ce12735f9459a; From c8585c6fcaf2011de54c3592e80a634a2b9e1a7f · fixed in 2fb8ff81659a57c42bb7b49e8339a2be2a318ef8; From c8585c6fcaf2011de54c3592e80a634a2b9e1a7f · fixed in 7461c60b9c6a839b13ad4c3490681a0cf5aa0637
- Linux Linux
4.7
- KernelLinux
From 4.7.0 · fixed in 5.10.270; From 5.11.0 · fixed in 5.15.221; From 5.16.0 · fixed in 6.1.188; From 6.2.0 · fixed in 6.6.157; From 6.7.0 · fixed in 6.12.110; From 6.13.0 · fixed in 6.18.52; From 6.19.0 · fixed in 7.2.6
References 8
git.kernel.org
- stable/c/41897f1bcf4ace5f1f28d0be784b6f4f0e929641
- stable/c/9c3469377b1d8caba6bec6ef3c460810bbfb02cc
- stable/c/1dd4882dbdc8bfdf2182fa388883c143fac0902a
- stable/c/7ba09330d9ea6e996228316719eae812d7e04983
- stable/c/c5e6434cc55f30220b228be237bb666351f9f4dd
- stable/c/7ace189b9ea79cf78df9c32b940ce12735f9459a
- stable/c/2fb8ff81659a57c42bb7b49e8339a2be2a318ef8
- stable/c/7461c60b9c6a839b13ad4c3490681a0cf5aa0637