Deleted Added
full compact
31c31
< __FBSDID("$FreeBSD: head/sys/compat/linux/linux_misc.c 202341 2010-01-15 07:05:00Z brooks $");
---
> __FBSDID("$FreeBSD: head/sys/compat/linux/linux_misc.c 215664 2010-11-22 09:06:59Z netchild $");
1698,1699c1698
< struct linux_emuldata *em, *td_em, *tmp_em;
< struct proc *sp;
---
> struct linux_emuldata *em;
1706,1724c1705,1712
< if (linux_use26(td)) {
< td_em = em_find(td->td_proc, EMUL_DONTLOCK);
<
< KASSERT(td_em != NULL, ("exit_group: emuldata not found.\n"));
<
< EMUL_SHARED_RLOCK(&emul_shared_lock);
< LIST_FOREACH_SAFE(em, &td_em->shared->threads, threads, tmp_em) {
< if (em->pid == td_em->pid)
< continue;
<
< sp = pfind(em->pid);
< psignal(sp, SIGKILL);
< PROC_UNLOCK(sp);
< #ifdef DEBUG
< printf(LMSG("linux_sys_exit_group: kill PID %d\n"), em->pid);
< #endif
< }
<
< EMUL_SHARED_RUNLOCK(&emul_shared_lock);
---
> em = em_find(td->td_proc, EMUL_DONTLOCK);
> if (em->shared->refs > 1) {
> EMUL_SHARED_WLOCK(&emul_shared_lock);
> em->shared->flags |= EMUL_SHARED_HASXSTAT;
> em->shared->xstat = W_EXITCODE(args->error_code, 0);
> EMUL_SHARED_WUNLOCK(&emul_shared_lock);
> if (linux_use26(td))
> linux_kill_threads(td, SIGKILL);
1725a1714
>