mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-15 13:22:55 +00:00
vfs: fix d_need_lookup/d_revalidate order in do_lookup
Doing revalidate on a dentry which has not yet been looked up makes no sense. Move the d_need_lookup() check before d_revalidate(). Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
4613ad180d
commit
fa4ee15951
@ -1139,6 +1139,8 @@ static int do_lookup(struct nameidata *nd, struct qstr *name,
|
||||
return -ECHILD;
|
||||
nd->seq = seq;
|
||||
|
||||
if (unlikely(d_need_lookup(dentry)))
|
||||
goto unlazy;
|
||||
if (unlikely(dentry->d_flags & DCACHE_OP_REVALIDATE)) {
|
||||
status = d_revalidate(dentry, nd);
|
||||
if (unlikely(status <= 0)) {
|
||||
@ -1147,8 +1149,6 @@ static int do_lookup(struct nameidata *nd, struct qstr *name,
|
||||
goto unlazy;
|
||||
}
|
||||
}
|
||||
if (unlikely(d_need_lookup(dentry)))
|
||||
goto unlazy;
|
||||
path->mnt = mnt;
|
||||
path->dentry = dentry;
|
||||
if (unlikely(!__follow_mount_rcu(nd, path, inode)))
|
||||
|
Loading…
Reference in New Issue
Block a user