+ struct uthread * ut;
+ struct proc *p;
+ thread_act_t thr_act = current_act();
+
+ ut = (struct uthread *)get_bsdthread_info(thr_act);
+ if (ut && (ut->uu_flag & P_VFORK) && ut->uu_proc) {
+ p = ut->uu_proc;
+ if ((p->p_flag & P_INVFORK) == 0)
+ panic("returning child proc not under vfork");
+ if (p->p_vforkact != (void *)thr_act)
+ panic("returning child proc which is not cur_act");
+ return(p);
+ }
+
+ p = (struct proc *)get_bsdtask_info(current_task());
+