Re: [PATCH 2/3] exfat: remove useless check in exfat_move_file()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



--- a/fs/exfat/namei.c
+++ b/fs/exfat/namei.c
@@ -1095,11 +1095,6 @@ static int exfat_move_file(struct inode *inode,
struct exfat_chain *p_olddir,
  	if (!epmov)
  		return -EIO;

-	/* check if the source and target directory is the same */
-	if (exfat_get_entry_type(epmov) == TYPE_DIR &&
-	    le32_to_cpu(epmov->dentry.stream.start_clu) == p_newdir->dir)
-		return -EINVAL;
-

It might check if the cluster numbers are same between source entry and
target directory.

This checks if newdir is the move target itself.
Example:
  mv /mnt/dir0 /mnt/dir0/foo

However, this check is not enough.
We need to check newdir and all ancestors.
Example:
  mv /mnt/dir0 /mnt/dir0/dir1/foo
  mv /mnt/dir0 /mnt/dir0/dir1/dir2/foo
  ...

This is probably a taboo for all layered filesystems.


Could you let me know what code you mentioned?
Or do you mean the codes on vfs?

You can find in do_renameat2(). --- around 'fs/namei.c:4440'
If the destination ancestors are itself, our driver will not be called.


BTW
Are you busy now?
I am waiting for your reply about "integrates dir-entry getting and validation" patch.

BR
---
Tetsuhiro Kohada <kohada.t2@xxxxxxxxx>



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux