diff options
author | Sage Weil <sage@newdream.net> | 2011-05-24 16:06:11 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2011-05-26 07:26:51 -0400 |
commit | 912dbc15d953791f013b0c64a8093ab0490e5f40 (patch) | |
tree | 90cdea27c906f37bfc58ba909431b709c7699879 /fs/namei.c | |
parent | b5afd2c406f5c6272d916fd705f44f070fbbc0ba (diff) |
vfs: clean up vfs_rmdir
Simplify the control flow with an out label.
Signed-off-by: Sage Weil <sage@newdream.net>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/namei.c')
-rw-r--r-- | fs/namei.c | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/fs/namei.c b/fs/namei.c index a1593baec0bd..18c3293411f1 100644 --- a/fs/namei.c +++ b/fs/namei.c | |||
@@ -2563,23 +2563,26 @@ int vfs_rmdir(struct inode *dir, struct dentry *dentry) | |||
2563 | return -EPERM; | 2563 | return -EPERM; |
2564 | 2564 | ||
2565 | mutex_lock(&dentry->d_inode->i_mutex); | 2565 | mutex_lock(&dentry->d_inode->i_mutex); |
2566 | |||
2567 | error = -EBUSY; | ||
2566 | if (d_mountpoint(dentry)) | 2568 | if (d_mountpoint(dentry)) |
2567 | error = -EBUSY; | 2569 | goto out; |
2568 | else { | 2570 | |
2569 | error = security_inode_rmdir(dir, dentry); | 2571 | error = security_inode_rmdir(dir, dentry); |
2570 | if (!error) { | 2572 | if (error) |
2571 | error = dir->i_op->rmdir(dir, dentry); | 2573 | goto out; |
2572 | if (!error) { | 2574 | |
2573 | dentry->d_inode->i_flags |= S_DEAD; | 2575 | error = dir->i_op->rmdir(dir, dentry); |
2574 | dont_mount(dentry); | 2576 | if (error) |
2575 | } | 2577 | goto out; |
2576 | } | 2578 | |
2577 | } | 2579 | dentry->d_inode->i_flags |= S_DEAD; |
2580 | dont_mount(dentry); | ||
2581 | |||
2582 | out: | ||
2578 | mutex_unlock(&dentry->d_inode->i_mutex); | 2583 | mutex_unlock(&dentry->d_inode->i_mutex); |
2579 | if (!error) { | 2584 | if (!error) |
2580 | d_delete(dentry); | 2585 | d_delete(dentry); |
2581 | } | ||
2582 | |||
2583 | return error; | 2586 | return error; |
2584 | } | 2587 | } |
2585 | 2588 | ||