Messages in this thread Patch in this message | | | From | Sage Weil <> | Subject | [PATCH 1/7] vfs: dentry_unhash immediately prior to rmdir | Date | Wed, 30 Mar 2011 15:09:22 -0700 |
| |
This presumes that there is no reason to unhash a dentry if we fail because it is a mountpoint or the LSM check fails, and that the LSM checks do not depend on the dentry being unhashed.
Signed-off-by: Sage Weil <sage@newdream.net> --- fs/namei.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/namei.c b/fs/namei.c index a4689eb..f47a5c0 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -2838,24 +2838,24 @@ int vfs_rmdir(struct inode *dir, struct dentry *dentry) return -EPERM; mutex_lock(&dentry->d_inode->i_mutex); - dentry_unhash(dentry); if (d_mountpoint(dentry)) error = -EBUSY; else { error = security_inode_rmdir(dir, dentry); if (!error) { + dentry_unhash(dentry); error = dir->i_op->rmdir(dir, dentry); if (!error) { dentry->d_inode->i_flags |= S_DEAD; dont_mount(dentry); } + dput(dentry); } } mutex_unlock(&dentry->d_inode->i_mutex); if (!error) { d_delete(dentry); } - dput(dentry); return error; } -- 1.7.0
| |