diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c index 1b4d66afbbe5..b2cd91b31fe3 100644 --- a/sys/kern/vfs_cache.c +++ b/sys/kern/vfs_cache.c @@ -5336,6 +5336,7 @@ cache_fplookup_symlink(struct cache_fpl *fpl) struct nameidata *ndp; struct componentname *cnp; struct vnode *dvp, *tvp; + struct pwd *pwd; int error; ndp = fpl->ndp; @@ -5393,7 +5394,10 @@ cache_fplookup_symlink(struct cache_fpl *fpl) if (__predict_false(mp == NULL)) { return (cache_fpl_aborted(fpl)); } - if (!cache_fplookup_mp_supported(mp)) { + + pwd = *(fpl->pwd); + if (!cache_fplookup_mp_supported(mp) || + pwd->pwd_adir != pwd->pwd_rdir) { cache_fpl_checkpoint(fpl); return (cache_fpl_partial(fpl)); }