summary refs log tree commit diff
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@suse.cz>2012-03-26 12:54:20 +0200
committerAl Viro <viro@zeniv.linux.org.uk>2012-03-31 16:03:16 -0400
commit3637c05d881b2b7bab36f339245b8963f5b29c9f (patch)
tree771ea8149d971517934d7023a6f3d34ccc42068f
parentfa4ee159512ee39b6c65ac40db986ea7a2f7de60 (diff)
downloadlinux-3637c05d881b2b7bab36f339245b8963f5b29c9f.tar.gz
vfs: don't revalidate just looked up dentry
__lookup_hash() calls ->lookup() if the dentry needs lookup and on success
revalidates the dentry (all under dir->i_mutex).

While this is harmless it doesn't make a lot of sense.

Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--fs/namei.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/fs/namei.c b/fs/namei.c
index 768f2366bddd..82f9568d315d 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1869,9 +1869,7 @@ static struct dentry *__lookup_hash(struct qstr *name,
 		 * __lookup_hash is called with the parent dir's i_mutex already
 		 * held, so we are good to go here.
 		 */
-		dentry = d_inode_lookup(base, dentry, nd);
-		if (IS_ERR(dentry))
-			return dentry;
+		return d_inode_lookup(base, dentry, nd);
 	}
 
 	if (dentry && (dentry->d_flags & DCACHE_OP_REVALIDATE)) {