Do not leave a process with no credential in zombproc.
Reviewed by: jhb
This commit is contained in:
parent
112f737245
commit
ebdc3f1d2d
@ -522,6 +522,20 @@ wait1(q, uap, compat)
|
|||||||
if (p->p_textvp)
|
if (p->p_textvp)
|
||||||
vrele(p->p_textvp);
|
vrele(p->p_textvp);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Finally finished with old proc entry.
|
||||||
|
* Unlink it from its process group and free it.
|
||||||
|
*/
|
||||||
|
leavepgrp(p);
|
||||||
|
|
||||||
|
sx_xlock(&allproc_lock);
|
||||||
|
LIST_REMOVE(p, p_list); /* off zombproc */
|
||||||
|
sx_xunlock(&allproc_lock);
|
||||||
|
|
||||||
|
sx_xlock(&proctree_lock);
|
||||||
|
LIST_REMOVE(p, p_sibling);
|
||||||
|
sx_xunlock(&proctree_lock);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Free up credentials.
|
* Free up credentials.
|
||||||
*/
|
*/
|
||||||
@ -538,30 +552,13 @@ wait1(q, uap, compat)
|
|||||||
*/
|
*/
|
||||||
if (p->p_args && --p->p_args->ar_ref == 0)
|
if (p->p_args && --p->p_args->ar_ref == 0)
|
||||||
FREE(p->p_args, M_PARGS);
|
FREE(p->p_args, M_PARGS);
|
||||||
PROC_UNLOCK(p);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Finally finished with old proc entry.
|
|
||||||
* Unlink it from its process group and free it.
|
|
||||||
*/
|
|
||||||
leavepgrp(p);
|
|
||||||
|
|
||||||
sx_xlock(&allproc_lock);
|
|
||||||
LIST_REMOVE(p, p_list); /* off zombproc */
|
|
||||||
sx_xunlock(&allproc_lock);
|
|
||||||
|
|
||||||
sx_xlock(&proctree_lock);
|
|
||||||
LIST_REMOVE(p, p_sibling);
|
|
||||||
sx_xunlock(&proctree_lock);
|
|
||||||
|
|
||||||
PROC_LOCK(p);
|
|
||||||
if (--p->p_procsig->ps_refcnt == 0) {
|
if (--p->p_procsig->ps_refcnt == 0) {
|
||||||
if (p->p_sigacts != &p->p_addr->u_sigacts)
|
if (p->p_sigacts != &p->p_addr->u_sigacts)
|
||||||
FREE(p->p_sigacts, M_SUBPROC);
|
FREE(p->p_sigacts, M_SUBPROC);
|
||||||
FREE(p->p_procsig, M_SUBPROC);
|
FREE(p->p_procsig, M_SUBPROC);
|
||||||
p->p_procsig = NULL;
|
p->p_procsig = NULL;
|
||||||
}
|
}
|
||||||
PROC_UNLOCK(p);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Give machine-dependent layer a chance
|
* Give machine-dependent layer a chance
|
||||||
|
Loading…
Reference in New Issue
Block a user