summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2018-12-19 12:28:13 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-01-09 17:14:49 +0100
commit6ef63893e78fd20aeb12257cf3259fc50c86f7da (patch)
tree242a393b4a34f1ede8a3dcd87494aa6c1f6baf2b
parent0bf8b3fdac08bc0bc15f854faab6f8c3b607a430 (diff)
downloadlinux-exynos-6ef63893e78fd20aeb12257cf3259fc50c86f7da.tar.gz
linux-exynos-6ef63893e78fd20aeb12257cf3259fc50c86f7da.tar.bz2
linux-exynos-6ef63893e78fd20aeb12257cf3259fc50c86f7da.zip
ext4: include terminating u32 in size of xattr entries when expanding inodes
commit a805622a757b6d7f65def4141d29317d8e37b8a1 upstream. In ext4_expand_extra_isize_ea(), we calculate the total size of the xattr header, plus the xattr entries so we know how much of the beginning part of the xattrs to move when expanding the inode extra size. We need to include the terminating u32 at the end of the xattr entries, or else if there is uninitialized, non-zero bytes after the xattr entries and before the xattr values, the list of xattr entries won't be properly terminated. Reported-by: Steve Graham <stgraham2000@gmail.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu> Cc: stable@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--fs/ext4/xattr.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
index d4fd6ed0d371..311761a6ef6d 100644
--- a/fs/ext4/xattr.c
+++ b/fs/ext4/xattr.c
@@ -2724,7 +2724,7 @@ retry:
base = IFIRST(header);
end = (void *)raw_inode + EXT4_SB(inode->i_sb)->s_inode_size;
min_offs = end - base;
- total_ino = sizeof(struct ext4_xattr_ibody_header);
+ total_ino = sizeof(struct ext4_xattr_ibody_header) + sizeof(u32);
error = xattr_check_inode(inode, header, end);
if (error)