+ if ((nlmp = uth->uu_nlminfo)) {
+ uth->uu_nlminfo = 0;
+ FREE(nlmp, M_LOCKF);
+ }
+
+ if ((task != kernel_task) ) {
+ int vfork_exit(struct proc *, int);
+
+ funnel_state = thread_funnel_set(kernel_flock, TRUE);
+ if (p)
+ TAILQ_REMOVE(&p->p_uthlist, uth, uu_list);
+ if ((uth->uu_flag & P_VFORK) && (vproc = uth->uu_proc)
+ && (vproc->p_flag & P_INVFORK)) {
+ if (!vfork_exit(vproc, W_EXITCODE(0, SIGKILL)))
+ vfork_return(act, p, vproc, NULL);
+
+ }
+ (void)thread_funnel_set(kernel_flock, funnel_state);
+ }