diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2009-12-24 02:05:43 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2010-03-05 09:01:16 -0500 |
commit | 27bff34300482632caf52ff589a4e7d755b32539 (patch) | |
tree | 49c6b38dd0c6ff2eebf0f0dad4c73a6539d52bbc /fs | |
parent | 3343eb8209cc69f0d2059f8c484ad7a3e1834c0b (diff) |
unroll do_last: loop in do_filp_open()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs')
-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: | |||
1845 | mutex_lock(&dir->d_inode->i_mutex); | 1845 | mutex_lock(&dir->d_inode->i_mutex); |
1846 | path.dentry = lookup_hash(&nd); | 1846 | path.dentry = lookup_hash(&nd); |
1847 | path.mnt = nd.path.mnt; | 1847 | path.mnt = nd.path.mnt; |
1848 | |||
1849 | do_last: | ||
1850 | filp = do_last(&nd, &path, open_flag, flag, acc_mode, mode, | 1848 | filp = do_last(&nd, &path, open_flag, flag, acc_mode, mode, |
1851 | pathname, dir, &is_link); | 1849 | pathname, dir, &is_link); |
1852 | if (is_link) | 1850 | if (is_link) |
@@ -1926,7 +1924,13 @@ do_link: | |||
1926 | path.dentry = lookup_hash(&nd); | 1924 | path.dentry = lookup_hash(&nd); |
1927 | path.mnt = nd.path.mnt; | 1925 | path.mnt = nd.path.mnt; |
1928 | __putname(nd.last.name); | 1926 | __putname(nd.last.name); |
1929 | goto do_last; | 1927 | filp = do_last(&nd, &path, open_flag, flag, acc_mode, mode, |
1928 | pathname, dir, &is_link); | ||
1929 | if (is_link) | ||
1930 | goto do_link; | ||
1931 | if (nd.root.mnt) | ||
1932 | path_put(&nd.root); | ||
1933 | return filp; | ||
1930 | } | 1934 | } |
1931 | 1935 | ||
1932 | /** | 1936 | /** |