--- x/fs/ext4/xattr.c +++ y/fs/ext4/xattr.c @@ -123,7 +123,6 @@ void ext4_xattr_inode_set_class(struct i { struct ext4_inode_info *ei = EXT4_I(ea_inode); - lockdep_set_subclass(&ea_inode->i_rwsem, 1); (void) ei; /* shut up clang warning if !CONFIG_LOCKDEP */ lockdep_set_subclass(&ei->i_data_sem, I_DATA_SEM_EA); } @@ -1456,6 +1455,7 @@ out: return ret; } +static struct lock_class_key ea_i_rwsem_key; /* * Create an inode to store the value of a large EA. */ @@ -1505,6 +1505,7 @@ static struct inode *ext4_xattr_inode_cr */ dquot_free_inode(ea_inode); dquot_drop(ea_inode); + lockdep_set_class(&ea_inode->i_rwsem, &ea_i_rwsem_key); inode_lock(ea_inode); ea_inode->i_flags |= S_NOQUOTA; inode_unlock(ea_inode);