diff options
author | kib <kib@FreeBSD.org> | 2007-02-01 13:33:33 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2007-02-01 13:33:33 +0000 |
commit | 3f2b6c010a7e8108cc1c386fb716b119a3fdd692 (patch) | |
tree | 12612c88ab9da21d9a2cf1bbe238e8c1526923a1 /sys/compat | |
parent | 02650398d18b3b63edf1117aae8d34ee6d28c729 (diff) | |
download | FreeBSD-src-3f2b6c010a7e8108cc1c386fb716b119a3fdd692.zip FreeBSD-src-3f2b6c010a7e8108cc1c386fb716b119a3fdd692.tar.gz |
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
Diffstat (limited to 'sys/compat')
-rw-r--r-- | sys/compat/linux/linux_misc.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/sys/compat/linux/linux_misc.c b/sys/compat/linux/linux_misc.c index e3e837e..02d86f9 100644 --- a/sys/compat/linux/linux_misc.c +++ b/sys/compat/linux/linux_misc.c @@ -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)); |