summaryrefslogtreecommitdiff
path: root/include/uapi/linux/virtio_gpu.h
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2023-05-04 14:47:23 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-05-17 13:59:10 +0200
commit2ec97dc90df40c50e509809dc9a198638a7e18b6 (patch)
tree75983306f2a29fa1fa70e9f015662e2595d91210 /include/uapi/linux/virtio_gpu.h
parent2091696bbc065f483fe2499c0cb1d25a89f4ccc5 (diff)
ext4: avoid deadlock in fs reclaim with page writeback
commit 00d873c17e29cc32d90ca852b82685f1673acaa5 upstream. 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. Reported-by: syzbot+6898da502aef574c5f8a@syzkaller.appspotmail.com Link: https://lore.kernel.org/all/0000000000004c66b405fa108e27@google.com Fixes: c8585c6fcaf2 ("ext4: fix races between changing inode journal mode and ext4_writepages") CC: stable@vger.kernel.org Signed-off-by: Jan Kara <jack@suse.cz> Link: https://lore.kernel.org/r/20230504124723.20205-1-jack@suse.cz Signed-off-by: Theodore Ts'o <tytso@mit.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/uapi/linux/virtio_gpu.h')
0 files changed, 0 insertions, 0 deletions