Commit f30833a7 authored by Baokun Li's avatar Baokun Li Committed by Zheng Zengkai
Browse files

ubifs: rename_whiteout: correct old_dir size computing

hulk inclusion
category: bugfix
bugzilla: 186191, https://gitee.com/openeuler/kernel/issues/I4U4SQ


CVE: NA

--------------------------------

When renaming the whiteout file, the old whiteout file is not deleted.
Therefore, we add the old dentry size to the old dir like XFS.
Otherwise, an error may be reported due to `fscki->calc_sz != fscki->size`
in check_indes.

Fixes: 9e0a1fff ("ubifs: Implement RENAME_WHITEOUT")
Reported-by: default avatarZhihao Cheng <chengzhihao1@huawei.com>
Signed-off-by: default avatarBaokun Li <libaokun1@huawei.com>
Reviewed-by: default avatarZhihao Cheng <chengzhihao1@huawei.com>
Reviewed-by: default avatarZhang Yi <yi.zhang@huawei.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parent 15349cb8
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1400,6 +1400,9 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry,
			iput(whiteout);
			goto out_release;
		}

		/* Add the old_dentry size to the old_dir size. */
		old_sz -= CALC_DENT_SIZE(fname_len(&old_nm));
	}

	lock_4_inodes(old_dir, new_dir, new_inode, whiteout);