summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2016-08-11 12:00:01 -0400
committerTheodore Ts'o <tytso@mit.edu>2016-08-11 12:00:01 -0400
commit443a8c41cd49de66a3fda45b32b9860ea0292b84 (patch)
tree7e7eb4337bdbfa1507cd6af268e4fee1934ce7dd /fs
parent418c12d08dc64a45107c467ec1ba29b5e69b0715 (diff)
downloadlinux-443a8c41cd49de66a3fda45b32b9860ea0292b84.tar.gz
linux-443a8c41cd49de66a3fda45b32b9860ea0292b84.tar.bz2
linux-443a8c41cd49de66a3fda45b32b9860ea0292b84.zip
ext4: properly align shifted xattrs when expanding inodes
We did not count with the padding of xattr value when computing desired shift of xattrs in the inode when expanding i_extra_isize. As a result we could create unaligned start of inline xattrs. Account for alignment properly. CC: stable@vger.kernel.org # 4.4.x- Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs')
-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 b18b1ff7cc27..c893f00b6dc0 100644
--- a/fs/ext4/xattr.c
+++ b/fs/ext4/xattr.c
@@ -1522,7 +1522,7 @@ retry:
if (entry_size + EXT4_XATTR_SIZE(size) >= isize_diff)
shift_bytes = isize_diff;
else
- shift_bytes = entry_size + size;
+ shift_bytes = entry_size + EXT4_XATTR_SIZE(size);
/* Adjust the offsets and shift the remaining entries ahead */
ext4_xattr_shift_entries(entry, -shift_bytes,
(void *)raw_inode + EXT4_GOOD_OLD_INODE_SIZE +