Re: [PATCH 1/1] perf/util: initialize is_test value in expr__ctx_new()

From: James Clark
Date: Wed Nov 13 2024 - 11:13:16 EST




On 08/11/2024 2:34 pm, Levi Yun wrote:
when expr_parse_ctx is allocated by expr_ctx_new(),
expr_scanner_ctx->is_test isn't initialize, so it has garbage value.
this can affects the result of expr__parse() return when it parses
non-exist event literal according to garbage value.

use calloc instead of malloc in expr_ctx_new() to fix this.

Fixes: 3340a08354ac ("perf pmu-events: Fix testing with JEVENTS_ARCH=all")
Signed-off-by: Levi Yun <yeoreum.yun@xxxxxxx>
---
tools/perf/util/expr.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/tools/perf/util/expr.c b/tools/perf/util/expr.c
index 5e3732bc2fa5..bc119501f091 100644
--- a/tools/perf/util/expr.c
+++ b/tools/perf/util/expr.c
@@ -285,7 +285,7 @@ struct expr_parse_ctx *expr__ctx_new(void)
{
struct expr_parse_ctx *ctx;

- ctx = malloc(sizeof(struct expr_parse_ctx));
+ ctx = calloc(1, sizeof(struct expr_parse_ctx));
if (!ctx)
return NULL;

@@ -294,9 +294,6 @@ struct expr_parse_ctx *expr__ctx_new(void)
free(ctx);
return NULL;
}
- ctx->sctx.user_requested_cpu_list = NULL;
- ctx->sctx.runtime = 0;
- ctx->sctx.system_wide = false;

return ctx;
}
--
LEVI:{C3F47F37-75D8-414A-A8BA-3980EC8A46D7}



Reviewed-by: James Clark <james.clark@xxxxxxxxxx>