From 6afcba702421b7865c2f95ddf0c1e9672fd651f8 Mon Sep 17 00:00:00 2001 From: Baokun Li Date: Wed, 2 Mar 2022 18:25:40 +0800 Subject: [PATCH] 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: 9e0a1fff8db56ea ("ubifs: Implement RENAME_WHITEOUT") Reported-by: Zhihao Cheng Signed-off-by: Baokun Li Reviewed-by: Zhihao Cheng Reviewed-by: Zhang Yi Signed-off-by: Zheng Zengkai --- fs/ubifs/dir.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c index 3db1c75fda5b..f5777f59a101 100644 --- a/fs/ubifs/dir.c +++ b/fs/ubifs/dir.c @@ -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); -- GitLab