Description
In the Linux kernel, the following vulnerability has been resolved: ext4: avoid deadlock in fs reclaim with page writeback Ext4 has a filesystem wide lock protecting ext4_writepages() calls to avoid races with switching of journalled data flag or inode format. This lock can however cause a deadlock like: CPU0 CPU1 ext4_writepages() percpu_down_read(sbi->s_writepages_rwsem); ext4_change_inode_journal_flag() percpu_down_write(sbi->s_writepages_rwsem); - blocks, all readers block from now on ext4_do_writepages() ext4_init_io_end() kmem_cache_zalloc(io_end_cachep, GFP_KERNEL) fs_reclaim frees dentry... dentry_unlink_inode() iput() - last ref => iput_final() - inode dirty => write_inode_now()... ext4_writepages() tries to acquire sbi->s_writepages_rwsem and blocks forever Make sure we cannot recurse into filesystem reclaim from writeback code to avoid the deadlock.
Product status
c8585c6fcaf2011de54c3592e80a634a2b9e1a7f (git) before 2ec97dc90df40c50e509809dc9a198638a7e18b6
c8585c6fcaf2011de54c3592e80a634a2b9e1a7f (git) before 4b4340bf04ce9a52061f15000ecedd126abc093c
c8585c6fcaf2011de54c3592e80a634a2b9e1a7f (git) before 00d873c17e29cc32d90ca852b82685f1673acaa5
4.7
Any version before 4.7
6.2.16 (semver)
6.3.3 (semver)
6.4 (original_commit_for_fix)
References
git.kernel.org/...c/2ec97dc90df40c50e509809dc9a198638a7e18b6
git.kernel.org/...c/4b4340bf04ce9a52061f15000ecedd126abc093c
git.kernel.org/...c/00d873c17e29cc32d90ca852b82685f1673acaa5