summaryrefslogtreecommitdiffstats
path: root/sys/compat
diff options
context:
space:
mode:
authornetchild <netchild@FreeBSD.org>2007-01-07 19:14:06 +0000
committernetchild <netchild@FreeBSD.org>2007-01-07 19:14:06 +0000
commite7d3b7ff43d56e2d2d1d3e4c5bbae835f1e78db7 (patch)
tree35612e9db7798739a7d48ae365207d403f7abcbc /sys/compat
parent10ec776aee8b4bf7ab4e9506ccb9af366e7bcb86 (diff)
downloadFreeBSD-src-e7d3b7ff43d56e2d2d1d3e4c5bbae835f1e78db7.zip
FreeBSD-src-e7d3b7ff43d56e2d2d1d3e4c5bbae835f1e78db7.tar.gz
MFp4 (112534):
Dont lock em in a case of just using em->shared->group_pid because the group_pid never changes. Submitted by: rdivacky Reviewed by: kib Glanced at by: jhb
Diffstat (limited to 'sys/compat')
-rw-r--r--sys/compat/linux/linux_misc.c6
-rw-r--r--sys/compat/linux/linux_signal.c4
2 files changed, 3 insertions, 7 deletions
diff --git a/sys/compat/linux/linux_misc.c b/sys/compat/linux/linux_misc.c
index ff08e67..a09f691 100644
--- a/sys/compat/linux/linux_misc.c
+++ b/sys/compat/linux/linux_misc.c
@@ -1439,10 +1439,9 @@ linux_getpid(struct thread *td, struct linux_getpid_args *args)
#endif
if (linux_use26(td)) {
- em = em_find(td->td_proc, EMUL_DOLOCK);
+ em = em_find(td->td_proc, EMUL_DONTLOCK);
KASSERT(em != NULL, ("getpid: emuldata not found.\n"));
td->td_retval[0] = em->shared->group_pid;
- EMUL_UNLOCK(&emul_lock);
} else {
td->td_retval[0] = td->td_proc->p_pid;
}
@@ -1481,7 +1480,7 @@ linux_getppid(struct thread *td, struct linux_getppid_args *args)
return (0);
}
- em = em_find(td->td_proc, EMUL_DOLOCK);
+ em = em_find(td->td_proc, EMUL_DONTLOCK);
KASSERT(em != NULL, ("getppid: process emuldata not found.\n"));
@@ -1508,7 +1507,6 @@ linux_getppid(struct thread *td, struct linux_getppid_args *args)
} else
td->td_retval[0] = pp->p_pid;
- EMUL_UNLOCK(&emul_lock);
PROC_UNLOCK(pp);
return (0);
diff --git a/sys/compat/linux/linux_signal.c b/sys/compat/linux/linux_signal.c
index c9904a8..d40d9d7 100644
--- a/sys/compat/linux/linux_signal.c
+++ b/sys/compat/linux/linux_signal.c
@@ -561,7 +561,7 @@ linux_tgkill(struct thread *td, struct linux_tgkill_args *args)
PROC_UNLOCK(p);
- em = em_find(p, EMUL_DOLOCK);
+ em = em_find(p, EMUL_DONTLOCK);
if (em == NULL) {
#ifdef DEBUG
@@ -573,8 +573,6 @@ linux_tgkill(struct thread *td, struct linux_tgkill_args *args)
if (em->shared->group_pid != args->tgid)
return ESRCH;
- EMUL_UNLOCK(&emul_lock);
-
return linux_kill(td, &ka);
}
OpenPOWER on IntegriCloud