diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2009-12-24 08:05:43 +0100 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2010-03-05 15:01:16 +0100 |
commit | 27bff34300482632caf52ff589a4e7d755b32539 (patch) | |
tree | 49c6b38dd0c6ff2eebf0f0dad4c73a6539d52bbc /fs/namei.c | |
parent | Shift releasing nd->root from do_last() to its caller (diff) | |
download | linux-27bff34300482632caf52ff589a4e7d755b32539.tar.xz linux-27bff34300482632caf52ff589a4e7d755b32539.zip |
unroll do_last: loop in do_filp_open()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to '')
-rw-r--r-- | fs/namei.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/fs/namei.c b/fs/namei.c index bff27c08134c..fc6bed7215c9 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -1845,8 +1845,6 @@ reval: mutex_lock(&dir->d_inode->i_mutex); path.dentry = lookup_hash(&nd); path.mnt = nd.path.mnt; - -do_last: filp = do_last(&nd, &path, open_flag, flag, acc_mode, mode, pathname, dir, &is_link); if (is_link) @@ -1926,7 +1924,13 @@ do_link: path.dentry = lookup_hash(&nd); path.mnt = nd.path.mnt; __putname(nd.last.name); - goto do_last; + filp = do_last(&nd, &path, open_flag, flag, acc_mode, mode, + pathname, dir, &is_link); + if (is_link) + goto do_link; + if (nd.root.mnt) + path_put(&nd.root); + return filp; } /** |