Use a loop instead of a goto in sysctl_kern_proc_kstack().
MFC after: 3 days
This commit is contained in:
parent
0981cbd5fd
commit
11748dae80
@ -2534,10 +2534,8 @@ sysctl_kern_proc_kstack(SYSCTL_HANDLER_ARGS)
|
||||
st = stack_create();
|
||||
|
||||
lwpidarray = NULL;
|
||||
numthreads = 0;
|
||||
PROC_LOCK(p);
|
||||
repeat:
|
||||
if (numthreads < p->p_numthreads) {
|
||||
do {
|
||||
if (lwpidarray != NULL) {
|
||||
free(lwpidarray, M_TEMP);
|
||||
lwpidarray = NULL;
|
||||
@ -2547,9 +2545,7 @@ sysctl_kern_proc_kstack(SYSCTL_HANDLER_ARGS)
|
||||
lwpidarray = malloc(sizeof(*lwpidarray) * numthreads, M_TEMP,
|
||||
M_WAITOK | M_ZERO);
|
||||
PROC_LOCK(p);
|
||||
goto repeat;
|
||||
}
|
||||
i = 0;
|
||||
} while (numthreads < p->p_numthreads);
|
||||
|
||||
/*
|
||||
* XXXRW: During the below loop, execve(2) and countless other sorts
|
||||
@ -2560,6 +2556,7 @@ sysctl_kern_proc_kstack(SYSCTL_HANDLER_ARGS)
|
||||
* have changed, in which case the right to extract debug info might
|
||||
* no longer be assured.
|
||||
*/
|
||||
i = 0;
|
||||
FOREACH_THREAD_IN_PROC(p, td) {
|
||||
KASSERT(i < numthreads,
|
||||
("sysctl_kern_proc_kstack: numthreads"));
|
||||
|
Loading…
Reference in New Issue
Block a user