eCryptfs: Clear i_nlink in rmdir
eCryptfs wasn't clearing the eCryptfs inode's i_nlink after a successful vfs_rmdir() on the lower directory. This resulted in the inode evict and destroy paths to be missed. https://bugs.launchpad.net/ecryptfs/+bug/723518 Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com> Cc: <stable@kernel.org>
This commit is contained in:
parent
61c4f2c81c
commit
07850552b9
1 changed files with 2 additions and 0 deletions
|
@ -527,6 +527,8 @@ static int ecryptfs_rmdir(struct inode *dir, struct dentry *dentry)
|
||||||
dget(lower_dentry);
|
dget(lower_dentry);
|
||||||
rc = vfs_rmdir(lower_dir_dentry->d_inode, lower_dentry);
|
rc = vfs_rmdir(lower_dir_dentry->d_inode, lower_dentry);
|
||||||
dput(lower_dentry);
|
dput(lower_dentry);
|
||||||
|
if (!rc && dentry->d_inode)
|
||||||
|
clear_nlink(dentry->d_inode);
|
||||||
fsstack_copy_attr_times(dir, lower_dir_dentry->d_inode);
|
fsstack_copy_attr_times(dir, lower_dir_dentry->d_inode);
|
||||||
dir->i_nlink = lower_dir_dentry->d_inode->i_nlink;
|
dir->i_nlink = lower_dir_dentry->d_inode->i_nlink;
|
||||||
unlock_dir(lower_dir_dentry);
|
unlock_dir(lower_dir_dentry);
|
||||||
|
|
Loading…
Reference in a new issue