summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_prot.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/kern_prot.c')
-rw-r--r--sys/kern/kern_prot.c21
1 files changed, 5 insertions, 16 deletions
diff --git a/sys/kern/kern_prot.c b/sys/kern/kern_prot.c
index 30f8902..e4f9d3a 100644
--- a/sys/kern/kern_prot.c
+++ b/sys/kern/kern_prot.c
@@ -344,10 +344,8 @@ setsid(register struct thread *td, struct setsid_args *uap)
error = 0;
pgrp = NULL;
- mtx_lock(&Giant);
MALLOC(newpgrp, struct pgrp *, sizeof(struct pgrp), M_PGRP, M_WAITOK | M_ZERO);
MALLOC(newsess, struct session *, sizeof(struct session), M_SESSION, M_WAITOK | M_ZERO);
- mtx_unlock(&Giant);
sx_xlock(&proctree_lock);
@@ -364,14 +362,10 @@ setsid(register struct thread *td, struct setsid_args *uap)
sx_xunlock(&proctree_lock);
- if (newpgrp != NULL || newsess != NULL) {
- mtx_lock(&Giant);
- if (newpgrp != NULL)
- FREE(newpgrp, M_PGRP);
- if (newsess != NULL)
- FREE(newsess, M_SESSION);
- mtx_unlock(&Giant);
- }
+ if (newpgrp != NULL)
+ FREE(newpgrp, M_PGRP);
+ if (newsess != NULL)
+ FREE(newsess, M_SESSION);
return (error);
}
@@ -413,9 +407,7 @@ setpgid(struct thread *td, register struct setpgid_args *uap)
error = 0;
- mtx_lock(&Giant);
MALLOC(newpgrp, struct pgrp *, sizeof(struct pgrp), M_PGRP, M_WAITOK | M_ZERO);
- mtx_unlock(&Giant);
sx_xlock(&proctree_lock);
if (uap->pid != 0 && uap->pid != curp->p_pid) {
@@ -479,11 +471,8 @@ done:
sx_xunlock(&proctree_lock);
KASSERT((error == 0) || (newpgrp != NULL),
("setpgid failed and newpgrp is NULL"));
- if (newpgrp != NULL) {
- mtx_lock(&Giant);
+ if (newpgrp != NULL)
FREE(newpgrp, M_PGRP);
- mtx_unlock(&Giant);
- }
return (error);
}
OpenPOWER on IntegriCloud