Skip to content

Commit

Permalink
ncpfs: fix rename over directory with dangling references
Browse files Browse the repository at this point in the history
ncpfs does not handle references to unlinked directories (or so it would
seem given the ncp_rmdir check).  Since it is also possible to rename over
an empty directory, perform the same check here.

CC: Petr Vandrovec <petr@vandrovec.name>
CC: linux-kernel@vger.kernel.org
Signed-off-by: Sage Weil <sage@newdream.net>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Sage Weil authored and Al Viro committed May 28, 2011
1 parent 7ce605d commit 76cc071
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion fs/ncpfs/dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -1144,8 +1144,16 @@ static int ncp_rename(struct inode *old_dir, struct dentry *old_dentry,
old_dentry->d_parent->d_name.name, old_dentry->d_name.name,
new_dentry->d_parent->d_name.name, new_dentry->d_name.name);

if (new_dentry->d_inode && S_ISDIR(new_dentry->d_inode->i_mode))
if (new_dentry->d_inode && S_ISDIR(new_dentry->d_inode->i_mode)) {
/*
* fail with EBUSY if there are still references to this
* directory.
*/
dentry_unhash(new_dentry);
error = -EBUSY;
if (!d_unhashed(new_dentry))
goto out;
}

ncp_age_dentry(server, old_dentry);
ncp_age_dentry(server, new_dentry);
Expand Down

0 comments on commit 76cc071

Please sign in to comment.