summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_proc.c
diff options
context:
space:
mode:
authormarkj <markj@FreeBSD.org>2016-04-17 23:22:32 +0000
committermarkj <markj@FreeBSD.org>2016-04-17 23:22:32 +0000
commit5af00548630cf2dcaef5f18bc24eafaace4755dc (patch)
tree60dc1b0d9e575b4b75e76644409b71bf86403f96 /sys/kern/kern_proc.c
parent806ab8645b21238d130bbfef16d03ef2d3a86625 (diff)
downloadFreeBSD-src-5af00548630cf2dcaef5f18bc24eafaace4755dc.zip
FreeBSD-src-5af00548630cf2dcaef5f18bc24eafaace4755dc.tar.gz
Use a loop instead of a goto in sysctl_kern_proc_kstack().
MFC after: 3 days
Diffstat (limited to 'sys/kern/kern_proc.c')
-rw-r--r--sys/kern/kern_proc.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c
index 3b220c3..9dabf7c 100644
--- a/sys/kern/kern_proc.c
+++ b/sys/kern/kern_proc.c
@@ -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 @@ repeat:
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 @@ repeat:
* 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"));
OpenPOWER on IntegriCloud