Unlock the image vnode around the call of pmc PMC_FN_PROCESS_EXEC hook.

The hook calls vn_fullpath(9), that should not be executed with a vnode
lock held.

Reported by:	Bruce Cran <bruce cran org uk>
Tested by:	pho
MFC after:	3 days
This commit is contained in:
Konstantin Belousov 2009-09-09 10:52:36 +00:00
parent 427992ecdb
commit 1ef6ea9b60
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=197031

View File

@ -786,10 +786,12 @@ do_execve(td, args, mac_p)
*/
if (PMC_SYSTEM_SAMPLING_ACTIVE() || PMC_PROC_IS_USING_PMCS(p)) {
PROC_UNLOCK(p);
VOP_UNLOCK(imgp->vp, 0);
pe.pm_credentialschanged = credential_changing;
pe.pm_entryaddr = imgp->entry_addr;
PMC_CALL_HOOK_X(td, PMC_FN_PROCESS_EXEC, (void *) &pe);
vn_lock(imgp->vp, LK_EXCLUSIVE | LK_RETRY);
} else
PROC_UNLOCK(p);
#else /* !HWPMC_HOOKS */