summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2002-04-09 20:00:40 +0000
committerjhb <jhb@FreeBSD.org>2002-04-09 20:00:40 +0000
commit1fbf4e984847088d9678efd24e5f040ed3d8c97a (patch)
treed1e88782968c34c55510775749f2586c9ecc19f7 /sys/kern
parentfc492a338c0a321710afc1fb0e1eb8cab3d78a71 (diff)
downloadFreeBSD-src-1fbf4e984847088d9678efd24e5f040ed3d8c97a.zip
FreeBSD-src-1fbf4e984847088d9678efd24e5f040ed3d8c97a.tar.gz
We don't need Giant to read the pgrp ID since the proc lock has protected
p_pgrp since the pgrp locking went in. We also don't need it to check for invalid values in the options argument to wait1(), so push Giant down slightly.
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/kern_exit.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c
index 7b409b4..db899b2 100644
--- a/sys/kern/kern_exit.c
+++ b/sys/kern/kern_exit.c
@@ -506,17 +506,15 @@ wait1(td, uap, compat)
struct pargs *pa;
int status, error;
- mtx_lock(&Giant);
q = td->td_proc;
if (uap->pid == 0) {
PROC_LOCK(q);
uap->pid = -q->p_pgid;
PROC_UNLOCK(q);
}
- if (uap->options &~ (WUNTRACED|WNOHANG|WLINUXCLONE)) {
- error = EINVAL;
- goto done2;
- }
+ if (uap->options &~ (WUNTRACED|WNOHANG|WLINUXCLONE))
+ return (EINVAL);
+ mtx_lock(&Giant);
loop:
nfound = 0;
sx_slock(&proctree_lock);
OpenPOWER on IntegriCloud