aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ecryptfs/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ecryptfs/inode.c')
-rw-r--r--fs/ecryptfs/inode.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
index 4d4cc6a90cd..bc116b9ffcf 100644
--- a/fs/ecryptfs/inode.c
+++ b/fs/ecryptfs/inode.c
@@ -521,12 +521,16 @@ static int ecryptfs_rmdir(struct inode *dir, struct dentry *dentry)
521 struct dentry *lower_dir_dentry; 521 struct dentry *lower_dir_dentry;
522 int rc; 522 int rc;
523 523
524 dentry_unhash(dentry);
525
524 lower_dentry = ecryptfs_dentry_to_lower(dentry); 526 lower_dentry = ecryptfs_dentry_to_lower(dentry);
525 dget(dentry); 527 dget(dentry);
526 lower_dir_dentry = lock_parent(lower_dentry); 528 lower_dir_dentry = lock_parent(lower_dentry);
527 dget(lower_dentry); 529 dget(lower_dentry);
528 rc = vfs_rmdir(lower_dir_dentry->d_inode, lower_dentry); 530 rc = vfs_rmdir(lower_dir_dentry->d_inode, lower_dentry);
529 dput(lower_dentry); 531 dput(lower_dentry);
532 if (!rc && dentry->d_inode)
533 clear_nlink(dentry->d_inode);
530 fsstack_copy_attr_times(dir, lower_dir_dentry->d_inode); 534 fsstack_copy_attr_times(dir, lower_dir_dentry->d_inode);
531 dir->i_nlink = lower_dir_dentry->d_inode->i_nlink; 535 dir->i_nlink = lower_dir_dentry->d_inode->i_nlink;
532 unlock_dir(lower_dir_dentry); 536 unlock_dir(lower_dir_dentry);
@@ -571,6 +575,9 @@ ecryptfs_rename(struct inode *old_dir, struct dentry *old_dentry,
571 struct dentry *lower_new_dir_dentry; 575 struct dentry *lower_new_dir_dentry;
572 struct dentry *trap = NULL; 576 struct dentry *trap = NULL;
573 577
578 if (new_dentry->d_inode && S_ISDIR(new_dentry->d_inode->i_mode))
579 dentry_unhash(new_dentry);
580
574 lower_old_dentry = ecryptfs_dentry_to_lower(old_dentry); 581 lower_old_dentry = ecryptfs_dentry_to_lower(old_dentry);
575 lower_new_dentry = ecryptfs_dentry_to_lower(new_dentry); 582 lower_new_dentry = ecryptfs_dentry_to_lower(new_dentry);
576 dget(lower_old_dentry); 583 dget(lower_old_dentry);