--- x/fs/ext4/inode.c +++ y/fs/ext4/inode.c @@ -5414,6 +5414,7 @@ int ext4_setattr(struct mnt_idmap *idmap (attr->ia_size > 0 ? attr->ia_size - 1 : 0) >> inode->i_sb->s_blocksize_bits); + down_read(&EXT4_I(inode)->xattr_sem); down_write(&EXT4_I(inode)->i_data_sem); old_disksize = EXT4_I(inode)->i_disksize; EXT4_I(inode)->i_disksize = attr->ia_size; @@ -5430,6 +5431,7 @@ int ext4_setattr(struct mnt_idmap *idmap else EXT4_I(inode)->i_disksize = old_disksize; up_write(&EXT4_I(inode)->i_data_sem); + up_read(&EXT4_I(inode)->xattr_sem); ext4_journal_stop(handle); if (error) goto out_mmap_sem;