61 lines
2.0 KiB
Diff
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
|
|
|