Description (CNA)
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.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected c8585c6fcaf2011de54c3592e80a634a2b9e1a7f before 2ec97dc90df40c50e509809dc9a198638a7e18b6; affected c8585c6fcaf2011de54c3592e80a634a2b9e1a7f before 4b4340bf04ce9a52061f15000ecedd126abc093c; affected c8585c6fcaf2011de54c3592e80a634a2b9e1a7f before 00d873c17e29cc32d90ca852b82685f1673acaa5 |
| Linux / Linux | affected 4.7; unaffected 0 before 4.7; unaffected 6.2.16 through 6.2.*; unaffected 6.3.3 through 6.3.*; unaffected 6.4 through * |
CWE
No CWE identifiers supplied.