diff --git a/[refs] b/[refs] index d0a266ac5712..5e46f7889b9c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4c780a4688b421baa896b59778c05d7e068e479f +refs/heads/master: 6fe43f9e3701f7a9f2be151a5e6cfe94b87e92f9 diff --git a/trunk/fs/nfs/dir.c b/trunk/fs/nfs/dir.c index 72f50c0117b1..eb50c19fc253 100644 --- a/trunk/fs/nfs/dir.c +++ b/trunk/fs/nfs/dir.c @@ -1511,9 +1511,11 @@ static int nfs_rename(struct inode *old_dir, struct dentry *old_dentry, */ if (!new_inode) goto go_ahead; - if (S_ISDIR(new_inode->i_mode)) - goto out; - else if (atomic_read(&new_dentry->d_count) > 2) { + if (S_ISDIR(new_inode->i_mode)) { + error = -EISDIR; + if (!S_ISDIR(old_inode->i_mode)) + goto out; + } else if (atomic_read(&new_dentry->d_count) > 2) { int err; /* copy the target dentry's name */ dentry = d_alloc(new_dentry->d_parent,