summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_exec.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/kern_exec.c')
-rw-r--r--sys/kern/kern_exec.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c
index f3a24c8..913f951 100644
--- a/sys/kern/kern_exec.c
+++ b/sys/kern/kern_exec.c
@@ -135,7 +135,10 @@ execve(td, uap)
int (*img_first)(struct image_params *);
struct pargs *oldargs, *newargs = NULL;
struct procsig *oldprocsig, *newprocsig;
- struct vnode *tracevp = NULL, *textvp = NULL;
+#ifdef KTRACE
+ struct vnode *tracevp = NULL;
+#endif
+ struct vnode *textvp = NULL;
imgp = &image_params;
@@ -369,11 +372,15 @@ interpret:
* we do not regain any tracing during a possible block.
*/
setsugid(p);
+#ifdef KTRACE
if (p->p_tracep && suser_cred(oldcred, PRISON_ROOT)) {
+ mtx_lock(&ktrace_mtx);
p->p_traceflag = 0;
tracevp = p->p_tracep;
p->p_tracep = NULL;
+ mtx_unlock(&ktrace_mtx);
}
+#endif
/* Make sure file descriptors 0..2 are in use. */
error = fdcheckstd(td);
if (error != 0)
@@ -475,8 +482,10 @@ interpret:
*/
if (textvp != NULL)
vrele(textvp);
+#ifdef KTRACE
if (tracevp != NULL)
vrele(tracevp);
+#endif
pargs_drop(oldargs);
exec_fail_dealloc:
OpenPOWER on IntegriCloud