aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikolaj Golub <trociny@FreeBSD.org>2012-02-12 07:53:02 +0000
committerMikolaj Golub <trociny@FreeBSD.org>2012-02-12 07:53:02 +0000
commit645ff62d5a9c1c7ab5cf92565bc535cfbf1d5620 (patch)
tree5ba5b75a56b84dec682cbf6c97f48c543bf9aca6
parente4076cb96d58a549578c01358533d8d69218cfb1 (diff)
Notes
-rw-r--r--lib/libkvm/kvm_proc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/libkvm/kvm_proc.c b/lib/libkvm/kvm_proc.c
index f8f84830d0a8..5b8b6aabab85 100644
--- a/lib/libkvm/kvm_proc.c
+++ b/lib/libkvm/kvm_proc.c
@@ -471,7 +471,7 @@ kvm_getprocs(kd, op, arg, cnt)
int *cnt;
{
int mib[4], st, nprocs;
- size_t size;
+ size_t size, osize;
int temp_op;
if (kd->procbase != 0) {
@@ -521,10 +521,11 @@ kvm_getprocs(kd, op, arg, cnt)
_kvm_realloc(kd, kd->procbase, size);
if (kd->procbase == 0)
return (0);
+ osize = size;
st = sysctl(mib, temp_op == KERN_PROC_ALL ||
temp_op == KERN_PROC_PROC ? 3 : 4,
kd->procbase, &size, NULL, 0);
- } while (st == -1 && errno == ENOMEM);
+ } while (st == -1 && errno == ENOMEM && size == osize);
if (st == -1) {
_kvm_syserr(kd, kd->program, "kvm_getprocs");
return (0);