The patch titled ecryptfs: don't ignore return value from lock_rename() has been removed from the -mm tree. Its filename was ecryptfs-dont-ignore-return-value-from-lock_rename.patch This patch was dropped because it was merged into mainline or a subsystem tree The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: ecryptfs: don't ignore return value from lock_rename() From: Erez Zadok <ezk@xxxxxxxxxxxxx> Use return value from lock_rename() in ecryptfs_rename, and properly check that return value. I've tested it briefly with ecryptfs: moved some files/directories at both the same level, as well as into subdirectories which may share a common ancestor. Things seem to work, but perhaps more testing is needed. Identical code to this has been running in Unionfs for a couple of years, so I'm reasonably confident that this patch is correct. Signed-off-by: Erez Zadok <ezk@xxxxxxxxxxxxx> Cc: Tyler Hicks <tyhicks@xxxxxxxxxxxxxxxxxx> Cc: Dustin Kirkland <kirkland@xxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- fs/ecryptfs/inode.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff -puN fs/ecryptfs/inode.c~ecryptfs-dont-ignore-return-value-from-lock_rename fs/ecryptfs/inode.c --- a/fs/ecryptfs/inode.c~ecryptfs-dont-ignore-return-value-from-lock_rename +++ a/fs/ecryptfs/inode.c @@ -614,6 +614,7 @@ ecryptfs_rename(struct inode *old_dir, s struct dentry *lower_new_dentry; struct dentry *lower_old_dir_dentry; struct dentry *lower_new_dir_dentry; + struct dentry *trap = NULL; lower_old_dentry = ecryptfs_dentry_to_lower(old_dentry); lower_new_dentry = ecryptfs_dentry_to_lower(new_dentry); @@ -621,7 +622,17 @@ ecryptfs_rename(struct inode *old_dir, s dget(lower_new_dentry); lower_old_dir_dentry = dget_parent(lower_old_dentry); lower_new_dir_dentry = dget_parent(lower_new_dentry); - lock_rename(lower_old_dir_dentry, lower_new_dir_dentry); + trap = lock_rename(lower_old_dir_dentry, lower_new_dir_dentry); + /* source should not be ancestor of target */ + if (trap == lower_old_dentry) { + rc = -EINVAL; + goto out_lock; + } + /* target should not be ancestor of source */ + if (trap == lower_new_dentry) { + rc = -ENOTEMPTY; + goto out_lock; + } rc = vfs_rename(lower_old_dir_dentry->d_inode, lower_old_dentry, lower_new_dir_dentry->d_inode, lower_new_dentry); if (rc) _ Patches currently in -mm which might be from ezk@xxxxxxxxxxxxx are linux-next.patch fsstack-ecryptfs-remove-unused-get_nlinks-param-to-fsstack_copy_attr_all.patch vfs-fsstack-handle-32-bit-smp-preempt-large-files-in-fsstack_copy_inode_size.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html