kernel/patches/0174-perf-expr-Fix-memory-leaks-in-metric-bison.patch
2023-11-10 14:47:39 +08:00

61 lines
2.0 KiB
Diff

From d7238f2e842192c64a8c45640aa092201b369937 Mon Sep 17 00:00:00 2001
From: Ian Rogers <irogers@google.com>
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 <irogers@google.com>
Reviewed-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lore.kernel.org/lkml/20200513000318.15166-1-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: hongrongxuan <hongrongxuan@huawei.com>
---
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 <num> NUMBER
%token <str> ID
+%destructor { free ($$); } <str>
%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