]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commit
ext4: do not create EA inode under buffer lock
authorJan Kara <jack@suse.cz>
Thu, 21 Mar 2024 16:26:50 +0000 (17:26 +0100)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 3 May 2024 04:02:24 +0000 (00:02 -0400)
commit0a46ef234756dca04623b7591e8ebb3440622f0b
treeac265fb5d61ded08f5e31b49db3339176371f0c5
parent4f3e6db3c3719952cfef89340290e0b7b03f7cbc
ext4: do not create EA inode under buffer lock

ext4_xattr_set_entry() creates new EA inodes while holding buffer lock
on the external xattr block. This is problematic as it nests all the
allocation locking (which acquires locks on other buffers) under the
buffer lock. This can even deadlock when the filesystem is corrupted and
e.g. quota file is setup to contain xattr block as data block. Move the
allocation of EA inode out of ext4_xattr_set_entry() into the callers.

Reported-by: syzbot+a43d4f48b8397d0e41a9@syzkaller.appspotmail.com
Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20240321162657.27420-2-jack@suse.cz
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/xattr.c