diff options
author | tanimura <tanimura@FreeBSD.org> | 2002-04-20 12:02:52 +0000 |
---|---|---|
committer | tanimura <tanimura@FreeBSD.org> | 2002-04-20 12:02:52 +0000 |
commit | e2acd5cecf61f060255d467b8d38cd35f941fb1c (patch) | |
tree | db003c23254ef3cdf9c6c9bea269469378e11e7d /sys/kern/kern_proc.c | |
parent | 487a22adbf7d14b574b29683ada3bc989bbfb261 (diff) | |
download | FreeBSD-src-e2acd5cecf61f060255d467b8d38cd35f941fb1c.zip FreeBSD-src-e2acd5cecf61f060255d467b8d38cd35f941fb1c.tar.gz |
Push down Giant for setpgid(), setsid() and aio_daemon(). Giant protects only
malloc(9) and free(9).
Diffstat (limited to 'sys/kern/kern_proc.c')
-rw-r--r-- | sys/kern/kern_proc.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c index 2d512b9..88a6f6f 100644 --- a/sys/kern/kern_proc.c +++ b/sys/kern/kern_proc.c @@ -491,12 +491,16 @@ pgdelete(pgrp) savesess->s_count--; SESS_UNLOCK(savesess); PGRP_UNLOCK(pgrp); + mtx_destroy(&pgrp->pg_mtx); + sx_xunlock(&proctree_lock); + mtx_lock(&Giant); + sx_xlock(&proctree_lock); if (savesess->s_count == 0) { mtx_destroy(&savesess->s_mtx); FREE(pgrp->pg_session, M_SESSION); } - mtx_destroy(&pgrp->pg_mtx); FREE(pgrp, M_PGRP); + mtx_unlock(&Giant); } /* |