No need to lock emul_lock in exit_group() because em->shared

cannot change (because its referenced by curthread). This fixes
a LOR caused by acquiring emul_shared_lock while holding emul_lock.

Fix typo in comment.

Submitted by: rdivacky
This commit is contained in:
kib 2007-02-01 13:33:33 +00:00
parent 02650398d1
commit 3f2b6c010a

View File

@ -1606,7 +1606,7 @@ linux_exit_group(struct thread *td, struct linux_exit_group_args *args)
#endif
if (linux_use26(td)) {
td_em = em_find(td->td_proc, EMUL_DOLOCK);
td_em = em_find(td->td_proc, EMUL_DONTLOCK);
KASSERT(td_em != NULL, ("exit_group: emuldata not found.\n"));
@ -1624,11 +1624,10 @@ linux_exit_group(struct thread *td, struct linux_exit_group_args *args)
}
EMUL_SHARED_RUNLOCK(&emul_shared_lock);
EMUL_UNLOCK(&emul_lock);
}
/*
* XXX: we should send a signal to the parent if
* SIGNAL_EXIT_GROUP is set. We ignore that (temporrarily?)
* SIGNAL_EXIT_GROUP is set. We ignore that (temporarily?)
* as it doesnt occur often.
*/
exit1(td, W_EXITCODE(args->error_code, 0));