diff options
| -rw-r--r-- | sys/kern/kern_kthread.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/kern/kern_kthread.c b/sys/kern/kern_kthread.c index 532b3c2a09b1..ed7477478b3f 100644 --- a/sys/kern/kern_kthread.c +++ b/sys/kern/kern_kthread.c @@ -317,14 +317,21 @@ kthread_add(void (*func)(void *), void *arg, struct proc *p, void kthread_exit(void) { - /* a module may be waiting for us to exit */ + struct proc *p; + + /* A module may be waiting for us to exit. */ wakeup(curthread); + /* * We could rely on thread_exit to call exit1() but * there is extra work that needs to be done */ if (curthread->td_proc->p_numthreads == 1) kproc_exit(0); /* never returns */ + + p = curthread->td_proc; + PROC_LOCK(p); + PROC_SLOCK(p); thread_exit(); } |
