Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: ext4: fix circular lock dependency in ext4_ext_migrate Move iput(tmp_inode) after ext4_writepages_up_write() to avoid a circular lock dependency between s_writepages_rwsem and sb_internal (freeze protection). The deadlock scenario: CPU0 (EXT4_IOC_MIGRATE) CPU1 (orphan cleanup during mount) ---- ---- ext4_ext_migrate() ext4_writepages_down_write() s_writepages_rwsem (write) ext4_evict_inode() sb_start_intwrite() [sb_internal] ... ext4_writepages() s_writepages_rwsem (read) [BLOCKED] iput(tmp_inode) ext4_evict_inode() sb_start_intwrite() [BLOCKED] The tmp_inode is a temporary inode with nlink=0 created solely for building the extent tree. Its eviction does not require s_writepages_rwsem protection, so deferring iput() until after releasing the rwsem is safe.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected cb85f4d23f794e24127f3e562cb3b54b0803f456 before 452950461241dfed8b1d32e94b227db38c99c5af; affected cb85f4d23f794e24127f3e562cb3b54b0803f456 before ada23457d4748d6e9c36c6f871fc29a6f558c48c; affected cb85f4d23f794e24127f3e562cb3b54b0803f456 before e4223231b6860141813637a6413c2371ae4d6fa8; affected cb85f4d23f794e24127f3e562cb3b54b0803f456 before 32f7ab52875ec7f800ca67e7176e5743a84baddf; affected cb85f4d23f794e24127f3e562cb3b54b0803f456 before a897682793eba5de51ee6f3152760374afa629cf; affected eb799e163dc2bc1ea0a4820b66f79d32a5e907df; affected bcc1eab71a67c46b9e24544ac7923f44444174ce; affected 8cf20fb73e73a4c4df0328b5297842c5ef34fdd9; affected e5d25003d059649e18a249635ed5ca7a7b1de5ad; affected 69f8a7991fd93c49096ddd11574db3e7df238b7b; affected 4.9.215 before 4.10; affected 4.14.172 before 4.15; affected 4.19.107 before 4.20; affected 5.4.23 before 5.5; affected 5.5.7 before 5.6 |
| Linux / Linux | affected 5.6; unaffected 0 before 5.6; unaffected 6.6.157 through 6.6.*; unaffected 6.12.110 through 6.12.*; unaffected 6.18.52 through 6.18.*; unaffected 7.2.6 through 7.2.*; unaffected 7.3 through * |
CWE
No CWE identifiers supplied.
References
- https://git.kernel.org/stable/c/452950461241dfed8b1d32e94b227db38c99c5af
- https://git.kernel.org/stable/c/ada23457d4748d6e9c36c6f871fc29a6f558c48c
- https://git.kernel.org/stable/c/e4223231b6860141813637a6413c2371ae4d6fa8
- https://git.kernel.org/stable/c/32f7ab52875ec7f800ca67e7176e5743a84baddf
- https://git.kernel.org/stable/c/a897682793eba5de51ee6f3152760374afa629cf