diff options
Diffstat (limited to 'sys/compat/linux')
-rw-r--r-- | sys/compat/linux/linux_emul.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/compat/linux/linux_emul.c b/sys/compat/linux/linux_emul.c index c1dafbc..2f92ebd 100644 --- a/sys/compat/linux/linux_emul.c +++ b/sys/compat/linux/linux_emul.c @@ -97,8 +97,7 @@ linux_proc_init(struct thread *td, pid_t child, int flags) LIST_INIT(&s->threads); } p = pfind(child); - if (p == NULL) - panic("process not found in proc_init\n"); + KASSERT(p != NULL, ("process not found in proc_init\n")); p->p_emuldata = em; PROC_UNLOCK(p); EMUL_LOCK(&emul_lock); @@ -182,8 +181,10 @@ linux_proc_exit(void *arg __unused, struct proc *p) int null = 0; error = copyout(&null, child_clear_tid, sizeof(null)); - if (error) + if (error) { + free(em, M_LINUX); return; + } /* futexes stuff */ cup.uaddr = child_clear_tid; |