Description
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 products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
cb85f4d23f794e24127f3e562cb3b54b0803f456 to < f204882d5eaca09f7848f081c9c9b5bbf2234895affectedcb85f4d23f794e24127f3e562cb3b54b0803f456 to < 452950461241dfed8b1d32e94b227db38c99c5afaffectedcb85f4d23f794e24127f3e562cb3b54b0803f456 to < ada23457d4748d6e9c36c6f871fc29a6f558c48caffectedcb85f4d23f794e24127f3e562cb3b54b0803f456 to < e4223231b6860141813637a6413c2371ae4d6fa8affectedcb85f4d23f794e24127f3e562cb3b54b0803f456 to < 32f7ab52875ec7f800ca67e7176e5743a84baddfaffectedcb85f4d23f794e24127f3e562cb3b54b0803f456 to < a897682793eba5de51ee6f3152760374afa629cfaffectedeb799e163dc2bc1ea0a4820b66f79d32a5e907dfaffectedbcc1eab71a67c46b9e24544ac7923f44444174ceaffected8cf20fb73e73a4c4df0328b5297842c5ef34fdd9affectede5d25003d059649e18a249635ed5ca7a7b1de5adaffected69f8a7991fd93c49096ddd11574db3e7df238b7baffected4.9.215 to < 4.10affected4.14.172 to < 4.15affected4.19.107 to < 4.20affected5.4.23 to < 5.5affected5.5.7 to < 5.6affected
Linux Linux
Default version status: affected
5.6affected0 to < 5.6unaffected6.1.191 to ≤ 6.1.*unaffected6.6.157 to ≤ 6.6.*unaffected6.12.110 to ≤ 6.12.*unaffected6.18.52 to ≤ 6.18.*unaffected7.2.6 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/f204882d5eaca09f7848f081c9c9b5bbf2234895 ↗
- 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 ↗