From d7238f2e842192c64a8c45640aa092201b369937 Mon Sep 17 00:00:00 2001 From: Ian Rogers Date: Tue, 12 May 2020 17:03:18 -0700 Subject: [PATCH 057/201] perf expr: Fix memory leaks in metric bison mainline inclusion from mainline-v5.8-rc1 commit 6365757894d5e7ada8a1d074a21fdaf2973dd5ae category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/I8C0CX Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6365757894d5e7ada8a1d074a21fdaf2973dd5ae ---------------------------------------------------------------------- Add a destructor for strings to reclaim memory in the event of errors. Free the ID given for a lookup, it was previously strdup-ed in the lex code. Signed-off-by: Ian Rogers Reviewed-by: Andi Kleen Acked-by: Jiri Olsa Cc: Alexander Shishkin Cc: Mark Rutland Cc: Namhyung Kim Cc: Peter Zijlstra Cc: Stephane Eranian Link: http://lore.kernel.org/lkml/20200513000318.15166-1-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: hongrongxuan --- tools/perf/util/expr.y | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/perf/util/expr.y b/tools/perf/util/expr.y index c020d794ccc3..5b1b02f3fafa 100644 --- a/tools/perf/util/expr.y +++ b/tools/perf/util/expr.y @@ -26,6 +26,7 @@ %token EXPR_PARSE EXPR_OTHER EXPR_ERROR %token NUMBER %token ID +%destructor { free ($$); } %token MIN MAX IF ELSE SMT_ON %left MIN MAX IF %left '|' @@ -93,8 +94,10 @@ if_expr: expr: NUMBER | ID { if (lookup_id(ctx, $1, &$$) < 0) { pr_debug("%s not found\n", $1); + free($1); YYABORT; } + free($1); } | expr '|' expr { $$ = (long)$1 | (long)$3; } | expr '&' expr { $$ = (long)$1 & (long)$3; } -- 2.27.0