summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 73428f6)
raw | patch | inline | side by side (parent: 73428f6)
author | Florian Forster <octo@collectd.org> | |
Fri, 19 Jun 2015 14:26:53 +0000 (16:26 +0200) | ||
committer | Florian Forster <octo@collectd.org> | |
Fri, 19 Jun 2015 14:26:53 +0000 (16:26 +0200) |
src/turbostat.c | patch | blob | history |
diff --git a/src/turbostat.c b/src/turbostat.c
index 80650dff38539c781bf106a2cdcc462ceaaf3300..42fed52a3e496b8e87036f20150023ce50a56ff2 100644 (file)
--- a/src/turbostat.c
+++ b/src/turbostat.c
@@ -1253,10 +1253,22 @@ allocate_counters(struct thread_data **threads, struct core_data **cores, struct
unsigned int i;
unsigned int total_threads, total_cores;
+ if ((topology.num_threads == 0)
+ || (topology.num_cores == 0)
+ || (topology.num_packages == 0))
+ {
+ ERROR ("turbostat plugin: Invalid topology: %u threads, %u cores, %u packages",
+ topology.num_threads, topology.num_cores, topology.num_packages);
+ return -1;
+ }
+
total_threads = topology.num_threads * topology.num_cores * topology.num_packages;
*threads = calloc(total_threads, sizeof(struct thread_data));
if (*threads == NULL)
- goto err;
+ {
+ ERROR ("turbostat plugin: calloc failed");
+ return -1;
+ }
for (i = 0; i < total_threads; ++i)
(*threads)[i].cpu_id = topology.max_cpu_id + 1;
@@ -1264,21 +1276,22 @@ allocate_counters(struct thread_data **threads, struct core_data **cores, struct
total_cores = topology.num_cores * topology.num_packages;
*cores = calloc(total_cores, sizeof(struct core_data));
if (*cores == NULL)
- goto err_clean_threads;
+ {
+ ERROR ("turbostat plugin: calloc failed");
+ sfree (threads);
+ return -1;
+ }
*packages = calloc(topology.num_packages, sizeof(struct pkg_data));
if (*packages == NULL)
- goto err_clean_cores;
+ {
+ ERROR ("turbostat plugin: calloc failed");
+ sfree (cores);
+ sfree (threads);
+ return -1;
+ }
return 0;
-
-err_clean_cores:
- free(*cores);
-err_clean_threads:
- free(*threads);
-err:
- ERROR("turbostat plugin: Failled to allocate memory for counters");
- return -1;
}
static void