Module Name: src Committed By: pooka Date: Mon Dec 9 16:21:15 UTC 2013
Modified Files: src/sys/rump/librump/rumpkern: lwproc.c Log Message: stop ktrace at process exit To generate a diff of this commit: cvs rdiff -u -r1.24 -r1.25 src/sys/rump/librump/rumpkern/lwproc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/rump/librump/rumpkern/lwproc.c diff -u src/sys/rump/librump/rumpkern/lwproc.c:1.24 src/sys/rump/librump/rumpkern/lwproc.c:1.25 --- src/sys/rump/librump/rumpkern/lwproc.c:1.24 Sun Oct 27 20:25:45 2013 +++ src/sys/rump/librump/rumpkern/lwproc.c Mon Dec 9 16:21:15 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: lwproc.c,v 1.24 2013/10/27 20:25:45 pooka Exp $ */ +/* $NetBSD: lwproc.c,v 1.25 2013/12/09 16:21:15 pooka Exp $ */ /* * Copyright (c) 2010, 2011 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: lwproc.c,v 1.24 2013/10/27 20:25:45 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: lwproc.c,v 1.25 2013/12/09 16:21:15 pooka Exp $"); #include <sys/param.h> #include <sys/atomic.h> @@ -34,6 +34,7 @@ __KERNEL_RCSID(0, "$NetBSD: lwproc.c,v 1 #include <sys/kauth.h> #include <sys/kmem.h> #include <sys/lwp.h> +#include <sys/ktrace.h> #include <sys/pool.h> #include <sys/proc.h> #include <sys/queue.h> @@ -51,12 +52,20 @@ lwproc_proc_free(struct proc *p) { kauth_cred_t cred; + KASSERT(p->p_stat == SDYING || p->p_stat == SDEAD); + +#ifdef KTRACE + if (p->p_tracep) { + mutex_enter(&ktrace_lock); + ktrderef(p); + mutex_exit(&ktrace_lock); + } +#endif + mutex_enter(proc_lock); KASSERT(p->p_nlwps == 0); KASSERT(LIST_EMPTY(&p->p_lwps)); - KASSERT(p->p_stat == SACTIVE || p->p_stat == SDYING || - p->p_stat == SDEAD); LIST_REMOVE(p, p_list); LIST_REMOVE(p, p_sibling);