Skip to content

Commit 6756af9

Browse files
committed
udf: Verify inode link counts before performing rename
During rename, we are updating link counts of various inodes either when rename deletes target or when moving directory across directories. Verify involved link counts are sane so that we don't trip warnings in VFS. Reported-by: [email protected] Signed-off-by: Jan Kara <[email protected]>
1 parent c556690 commit 6756af9

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

fs/udf/namei.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -791,8 +791,18 @@ static int udf_rename(struct mnt_idmap *idmap, struct inode *old_dir,
791791
retval = -ENOTEMPTY;
792792
if (!empty_dir(new_inode))
793793
goto out_oiter;
794+
retval = -EFSCORRUPTED;
795+
if (new_inode->i_nlink != 2)
796+
goto out_oiter;
794797
}
798+
retval = -EFSCORRUPTED;
799+
if (old_dir->i_nlink < 3)
800+
goto out_oiter;
795801
is_dir = true;
802+
} else if (new_inode) {
803+
retval = -EFSCORRUPTED;
804+
if (new_inode->i_nlink < 1)
805+
goto out_oiter;
796806
}
797807
if (is_dir && old_dir != new_dir) {
798808
retval = udf_fiiter_find_entry(old_inode, &dotdot_name,

0 commit comments

Comments
 (0)