diff options
| author | Attilio Rao <attilio@FreeBSD.org> | 2011-05-05 14:39:14 +0000 |
|---|---|---|
| committer | Attilio Rao <attilio@FreeBSD.org> | 2011-05-05 14:39:14 +0000 |
| commit | 71a19bdc640eb9d54e7db3d1d135753888f3469c (patch) | |
| tree | e5d54bcefbf1fe0c4c6804bdc5c4852b1b64518a /lib/libmemstat | |
| parent | a7a347967f3856b66bc2358cf86ee8ee957fc5bf (diff) | |
Notes
Diffstat (limited to 'lib/libmemstat')
| -rw-r--r-- | lib/libmemstat/memstat_uma.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/libmemstat/memstat_uma.c b/lib/libmemstat/memstat_uma.c index 10ff8ec36a813..302093744b5c0 100644 --- a/lib/libmemstat/memstat_uma.c +++ b/lib/libmemstat/memstat_uma.c @@ -45,6 +45,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <unistd.h> #include "memstat.h" #include "memstat_internal.h" @@ -315,6 +316,7 @@ memstat_kvm_uma(struct memory_type_list *list, void *kvm_handle) int hint_dontsearch, i, mp_maxid, ret; char name[MEMTYPE_MAXNAME]; cpuset_t all_cpus; + long cpusetsize; kvm_t *kvm; kvm = (kvm_t *)kvm_handle; @@ -338,7 +340,13 @@ memstat_kvm_uma(struct memory_type_list *list, void *kvm_handle) list->mtl_error = ret; return (-1); } - ret = kread_symbol(kvm, X_ALL_CPUS, &all_cpus, sizeof(all_cpus), 0); + cpusetsize = sysconf(_SC_CPUSET_SIZE); + if (cpusetsize == -1 || (u_long)cpusetsize > sizeof(cpuset_t)) { + list->mtl_error = MEMSTAT_ERROR_KVM_NOSYMBOL; + return (-1); + } + CPU_ZERO(&all_cpus); + ret = kread_symbol(kvm, X_ALL_CPUS, &all_cpus, cpusetsize, 0); if (ret != 0) { list->mtl_error = ret; return (-1); |
