X-Git-Url: https://git.openafs.org/?p=openafs.git;a=blobdiff_plain;f=src%2Fafs%2FLINUX%2Fosi_vnodeops.c;h=ca7fe852b762d1aaf1a7c3f321ed9e3ccb9b9d46;hp=cc6775d5ff7a020bdd2f4b16824871aa7c65dcfc;hb=50083ea0df9610d0c652931af58e013e7f494c19;hpb=cc07c8b99ae56dc777a07b4b818a2fa6e8a7afa3 diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c index cc6775d..ca7fe85 100644 --- a/src/afs/LINUX/osi_vnodeops.c +++ b/src/afs/LINUX/osi_vnodeops.c @@ -1134,6 +1134,7 @@ afs_linux_dentry_revalidate(struct dentry *dp, int flags) code = afs_EvalFakeStat(&vcp, &fakestate, &treq); if ((tryEvalOnly && vcp->mvstat == 1) || code) { /* a mount point, not yet replaced by its directory */ + dput(parent); goto bad_dentry; } } @@ -1150,8 +1151,10 @@ afs_linux_dentry_revalidate(struct dentry *dp, int flags) * always require a crref() which would be "slow". */ if (vcp->last_looker != treq.uid) { - if (!afs_AccessOK(vcp, (vType(vcp) == VREG) ? PRSFS_READ : PRSFS_LOOKUP, &treq, CHECK_MODE_BITS)) + if (!afs_AccessOK(vcp, (vType(vcp) == VREG) ? PRSFS_READ : PRSFS_LOOKUP, &treq, CHECK_MODE_BITS)) { + dput(parent); goto bad_dentry; + } vcp->last_looker = treq.uid; }