Loading fs/namei.c +18 −24 Original line number Diff line number Diff line Loading @@ -436,28 +436,6 @@ static inline int d_revalidate(struct dentry *dentry, struct nameidata *nd) return dentry->d_op->d_revalidate(dentry, nd); } static struct dentry * do_revalidate(struct dentry *dentry, struct nameidata *nd) { int status = d_revalidate(dentry, nd); if (unlikely(status <= 0)) { /* * The dentry failed validation. * If d_revalidate returned 0 attempt to invalidate * the dentry otherwise d_revalidate is asking us * to return a fail status. */ if (status < 0) { dput(dentry); dentry = ERR_PTR(status); } else if (!d_invalidate(dentry)) { dput(dentry); dentry = NULL; } } return dentry; } /** * complete_walk - successful completion of path walk * @nd: pointer nameidata Loading Loading @@ -1642,8 +1620,24 @@ static struct dentry *__lookup_hash(struct qstr *name, return dentry; } if (dentry && (dentry->d_flags & DCACHE_OP_REVALIDATE)) dentry = do_revalidate(dentry, nd); if (dentry && (dentry->d_flags & DCACHE_OP_REVALIDATE)) { int status = d_revalidate(dentry, nd); if (unlikely(status <= 0)) { /* * The dentry failed validation. * If d_revalidate returned 0 attempt to invalidate * the dentry otherwise d_revalidate is asking us * to return a fail status. */ if (status < 0) { dput(dentry); return ERR_PTR(status); } else if (!d_invalidate(dentry)) { dput(dentry); dentry = NULL; } } } if (!dentry) dentry = d_alloc_and_lookup(base, name, nd); Loading Loading
fs/namei.c +18 −24 Original line number Diff line number Diff line Loading @@ -436,28 +436,6 @@ static inline int d_revalidate(struct dentry *dentry, struct nameidata *nd) return dentry->d_op->d_revalidate(dentry, nd); } static struct dentry * do_revalidate(struct dentry *dentry, struct nameidata *nd) { int status = d_revalidate(dentry, nd); if (unlikely(status <= 0)) { /* * The dentry failed validation. * If d_revalidate returned 0 attempt to invalidate * the dentry otherwise d_revalidate is asking us * to return a fail status. */ if (status < 0) { dput(dentry); dentry = ERR_PTR(status); } else if (!d_invalidate(dentry)) { dput(dentry); dentry = NULL; } } return dentry; } /** * complete_walk - successful completion of path walk * @nd: pointer nameidata Loading Loading @@ -1642,8 +1620,24 @@ static struct dentry *__lookup_hash(struct qstr *name, return dentry; } if (dentry && (dentry->d_flags & DCACHE_OP_REVALIDATE)) dentry = do_revalidate(dentry, nd); if (dentry && (dentry->d_flags & DCACHE_OP_REVALIDATE)) { int status = d_revalidate(dentry, nd); if (unlikely(status <= 0)) { /* * The dentry failed validation. * If d_revalidate returned 0 attempt to invalidate * the dentry otherwise d_revalidate is asking us * to return a fail status. */ if (status < 0) { dput(dentry); return ERR_PTR(status); } else if (!d_invalidate(dentry)) { dput(dentry); dentry = NULL; } } } if (!dentry) dentry = d_alloc_and_lookup(base, name, nd); Loading