OSDN Git Service

ext4: make sure to reset inode lockdep class when quota enabling fails
authorJan Kara <jack@suse.cz>
Thu, 7 Oct 2021 15:53:36 +0000 (17:53 +0200)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 10 Jan 2022 18:25:55 +0000 (13:25 -0500)
commit4013d47a5307fdb5c13370b5392498b00fedd274
treec19a4f3b10c3c52a2056af076c0f2928a443ee92
parent15fc69bbbbbc8c72e5f6cc4e1be0f51283c5448e
ext4: make sure to reset inode lockdep class when quota enabling fails

When we succeed in enabling some quota type but fail to enable another
one with quota feature, we correctly disable all enabled quota types.
However we forget to reset i_data_sem lockdep class. When the inode gets
freed and reused, it will inherit this lockdep class (i_data_sem is
initialized only when a slab is created) and thus eventually lockdep
barfs about possible deadlocks.

Reported-and-tested-by: syzbot+3b6f9218b1301ddda3e2@syzkaller.appspotmail.com
Signed-off-by: Jan Kara <jack@suse.cz>
Cc: stable@kernel.org
Link: https://lore.kernel.org/r/20211007155336.12493-3-jack@suse.cz
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/super.c