diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c --- a/sys/kern/vfs_cache.c +++ b/sys/kern/vfs_cache.c @@ -3665,23 +3665,7 @@ addend = 0; - /* - * Check for VBAD to work around the vp_crossmp bug in lookup(). - * - * For example consider tmpfs on /tmp and realpath /tmp. ni_vp will be - * set to mount point's root vnode while ni_dvp will be vp_crossmp. - * If the type is VDIR (like in this very case) we can skip looking - * at ni_dvp in the first place. However, since vnodes get passed here - * unlocked the target may transition to doomed state (type == VBAD) - * before we get to evaluate the condition. If this happens, we will - * populate part of the buffer and descend to vn_fullpath_dir with - * vp == vp_crossmp. Prevent the problem by checking for VBAD. - */ type = atomic_load_8(&vp->v_type); - if (type == VBAD) { - error = ENOENT; - goto out_bad; - } if (type != VDIR) { addend = hrdl_name_length + 2; if (*buflen < addend) {