From 5d89c625949d8d4ae4abaefbc77b90d79cc8d09a Mon Sep 17 00:00:00 2001 From: Vincent Fu Date: Thu, 7 Feb 2019 10:51:06 -0500 Subject: [PATCH 1/1] stat: clean up calc_clat_percentiles We already know the size of the buffer needed. So there is no need to do anything fancy when allocating it. Signed-off-by: Jens Axboe --- stat.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/stat.c b/stat.c index 351c49cc..7c843e6b 100644 --- a/stat.c +++ b/stat.c @@ -139,7 +139,6 @@ unsigned int calc_clat_percentiles(uint64_t *io_u_plat, unsigned long long nr, { unsigned long long sum = 0; unsigned int len, i, j = 0; - unsigned int oval_len = 0; unsigned long long *ovals = NULL; bool is_last; @@ -161,6 +160,10 @@ unsigned int calc_clat_percentiles(uint64_t *io_u_plat, unsigned long long nr, if (len > 1) qsort((void *)plist, len, sizeof(plist[0]), double_cmp); + ovals = malloc(len * sizeof(*ovals)); + if (!ovals) + return 0; + /* * Calculate bucket values, note down max and min values */ @@ -170,11 +173,6 @@ unsigned int calc_clat_percentiles(uint64_t *io_u_plat, unsigned long long nr, while (sum >= (plist[j].u.f / 100.0 * nr)) { assert(plist[j].u.f <= 100.0); - if (j == oval_len) { - oval_len += 100; - ovals = realloc(ovals, oval_len * sizeof(*ovals)); - } - ovals[j] = plat_idx_to_val(i); if (ovals[j] < *minv) *minv = ovals[j]; -- 2.25.1