This fixes a number of problems with ea_inode handling which were pointed out by syzbot. The first and third add some additional checking for invalid / maliciously fuzzed file systems. The second and fourth patch adds some lockdep annotations to avoid some false positive reports from lockdep. There is still one remaining syzbot report[1] relating to ea_inodes not handled by this patch series, and that is an apparently deadlock which happens when a kernel thread is freeing an ea_inode racing with another thread which is trying to find the mbcache entry (presumably with the intent of reusing it). The problem is apparently hard to reproduce; it's only been hit 4 times, and there is no C reproducer; just a syzkaller reproducer. So we'll leave that for another day/ [1] https://syzkaller.appspot.com/bug?extid=38e6635a03c83c76297a INFO: task hung in ext4_evict_ea_inode Theodore Ts'o (4): ext4: add EA_INODE checking to ext4_iget() ext4: set lockdep subclass for the ea_inode in ext4_xattr_inode_cache_find() ext4: disallow ea_inodes with extended attributes ext4: add lockdep annotations for i_data_sem for ea_inode's fs/ext4/ext4.h | 5 ++++- fs/ext4/inode.c | 34 +++++++++++++++++++++++++++++----- fs/ext4/xattr.c | 41 ++++++++++++----------------------------- 3 files changed, 45 insertions(+), 35 deletions(-) -- 2.31.0