diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c index 960d54c368..f6d680fa4e 100644 --- a/src/afs/LINUX/osi_vnodeops.c +++ b/src/afs/LINUX/osi_vnodeops.c @@ -628,6 +628,16 @@ static int afs_linux_revalidate(struct dentry *dp) return 0; } + /* Drop the dentry if the callback is broken */ + if (!(vcp->states & CStatd)) { + d_drop(dp); +#ifdef AFS_LINUX24_ENV + unlock_kernel(); +#endif + AFS_GUNLOCK(); + return 0; + } + /* Make this a fast path (no crref), since it's called so often. */ if (vcp->states & CStatd) { if (*dp->d_name.name != '/' && vcp->mvstat == 2) /* root vnode */