From: Konstantin Khlebnikov Date: Mon, 22 May 2017 02:36:23 +0000 (-0400) Subject: ext4: keep existing extra fields when inode expands X-Git-Tag: v3.2.93~68 X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=commitdiff_plain;h=1e0463b918b6d2014160cbb980e7a248539edc6d ext4: keep existing extra fields when inode expands commit 887a9730614727c4fff7cb756711b190593fc1df upstream. ext4_expand_extra_isize() should clear only space between old and new size. Fixes: 6dd4ee7cab7e # v2.6.23 Signed-off-by: Konstantin Khlebnikov Signed-off-by: Theodore Ts'o Signed-off-by: Ben Hutchings --- diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index f881e3484481..bee0d761b4fb 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -4637,8 +4637,9 @@ static int ext4_expand_extra_isize(struct inode *inode, /* No extended attributes present */ if (!ext4_test_inode_state(inode, EXT4_STATE_XATTR) || header->h_magic != cpu_to_le32(EXT4_XATTR_MAGIC)) { - memset((void *)raw_inode + EXT4_GOOD_OLD_INODE_SIZE, 0, - new_extra_isize); + memset((void *)raw_inode + EXT4_GOOD_OLD_INODE_SIZE + + EXT4_I(inode)->i_extra_isize, 0, + new_extra_isize - EXT4_I(inode)->i_extra_isize); EXT4_I(inode)->i_extra_isize = new_extra_isize; return 0; }