diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2018-04-06 16:45:33 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2018-04-06 16:45:33 -0400 |
commit | 8613a209ffa6dd2c19c405fa699a062035dec9b0 (patch) | |
tree | 5007bf336b958f971913a84669b446d2afbb2151 /fs/namei.c | |
parent | 88d8331afb0f76ad856770c49a0c0909d123b59c (diff) | |
download | lwn-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.c | 4 |
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); |