Index: sys/kern/uipc_mqueue.c =================================================================== --- sys/kern/uipc_mqueue.c +++ sys/kern/uipc_mqueue.c @@ -869,7 +869,7 @@ if (dvp->v_type != VDIR) return (ENOTDIR); - error = VOP_ACCESS(dvp, VEXEC, cnp->cn_cred, cnp->cn_thread); + error = VOP_ACCESS(dvp, VEXEC, cnp->cn_cred, td); if (error) return (error); Index: sys/kern/vfs_lookup.c =================================================================== --- sys/kern/vfs_lookup.c +++ sys/kern/vfs_lookup.c @@ -317,6 +317,7 @@ cnp = &ndp->ni_cnd; td = cnp->cn_thread; p = td->td_proc; + ASSERT_CN_THREAD(&ndp->ni_cnd); ndp->ni_cnd.cn_cred = ndp->ni_cnd.cn_thread->td_ucred; KASSERT(cnp->cn_cred && p, ("namei: bad cred/proc")); KASSERT((cnp->cn_nameiop & (~OPMASK)) == 0, @@ -385,8 +386,7 @@ ndp->ni_loopcnt = 0; #ifdef KTRACE if (KTRPOINT(td, KTR_NAMEI)) { - KASSERT(cnp->cn_thread == curthread, - ("namei not using curthread")); + ASSERT_CN_THREAD(cnp); ktrnamei(cnp->cn_pnbuf); } #endif @@ -895,6 +895,7 @@ unionlookup: #ifdef MAC if ((cnp->cn_flags & NOMACCHECK) == 0) { + ASSERT_CN_THREAD(cnp); error = mac_vnode_check_lookup(cnp->cn_thread->td_ucred, dp, cnp); if (error) Index: sys/kern/vfs_subr.c =================================================================== --- sys/kern/vfs_subr.c +++ sys/kern/vfs_subr.c @@ -4632,7 +4632,16 @@ if (!IGNORE_LOCK(vp) && VOP_ISLOCKED(vp) != LK_EXCLUSIVE) vfs_badlock("is not exclusive locked but should be", str, vp); } + #endif /* DEBUG_VFS_LOCKS */ + +void +assert_cn_thread(struct componentname *cnp) +{ + + KASSERT(cnp->cn_thread == curthread, + ("cn_thread %p != curthread %p", cnp->cn_thread, curthread)); +} void vop_rename_fail(struct vop_rename_args *ap)