diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index ce7253b3f549..8babe8c344fe 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c @@ -1192,6 +1192,14 @@ ext4_xattr_inode_dec_ref_all(handle_t *handle, struct inode *parent, if (err) continue; + size_t size = le32_to_cpu(entry->e_value_size); + if (i_size_read(ea_inode) != size) { + ext4_warning_inode(ea_inode, + "ea_inode file size=%llu entry size=%zu", + i_size_read(ea_inode), size); + iput(ea_inode); + continue; + } err = ext4_expand_inode_array(ea_inode_array, ea_inode); if (err) { ext4_warning_inode(ea_inode,