diff options
author | Jan Kara <jack@suse.cz> | 2016-08-11 12:00:01 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2016-08-11 12:00:01 -0400 |
commit | 443a8c41cd49de66a3fda45b32b9860ea0292b84 (patch) | |
tree | 7e7eb4337bdbfa1507cd6af268e4fee1934ce7dd /fs | |
parent | 418c12d08dc64a45107c467ec1ba29b5e69b0715 (diff) | |
download | linux-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.c | 2 |
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 + |