summaryrefslogtreecommitdiff
path: root/fs/namei.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2018-04-06 16:45:33 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2018-04-06 16:45:33 -0400
commit8613a209ffa6dd2c19c405fa699a062035dec9b0 (patch)
tree5007bf336b958f971913a84669b446d2afbb2151 /fs/namei.c
parent88d8331afb0f76ad856770c49a0c0909d123b59c (diff)
downloadlwn-8613a209ffa6dd2c19c405fa699a062035dec9b0.tar.gz
lwn-8613a209ffa6dd2c19c405fa699a062035dec9b0.zip
make lookup_one_len() safe to use with directory locked shared
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/namei.c')
-rw-r--r--fs/namei.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/namei.c b/fs/namei.c
index ba48e154409b..6e0f6eea9896 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -2471,6 +2471,7 @@ static int lookup_one_len_common(const char *name, struct dentry *base,
*/
struct dentry *lookup_one_len(const char *name, struct dentry *base, int len)
{
+ struct dentry *dentry;
struct qstr this;
int err;
@@ -2480,7 +2481,8 @@ struct dentry *lookup_one_len(const char *name, struct dentry *base, int len)
if (err)
return ERR_PTR(err);
- return __lookup_hash(&this, base, 0);
+ dentry = lookup_dcache(&this, base, 0);
+ return dentry ? dentry : __lookup_slow(&this, base, 0);
}
EXPORT_SYMBOL(lookup_one_len);