[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230613182629.1500317-1-irogers@google.com>
Date: Tue, 13 Jun 2023 11:26:29 -0700
From: Ian Rogers <irogers@...gle.com>
To: Peter Zijlstra <peterz@...radead.org>,
Ingo Molnar <mingo@...hat.com>,
Arnaldo Carvalho de Melo <acme@...nel.org>,
Mark Rutland <mark.rutland@....com>,
Alexander Shishkin <alexander.shishkin@...ux.intel.com>,
Jiri Olsa <jolsa@...nel.org>,
Namhyung Kim <namhyung@...nel.org>,
Ian Rogers <irogers@...gle.com>,
Adrian Hunter <adrian.hunter@...el.com>,
Rob Herring <robh@...nel.org>,
Kan Liang <kan.liang@...ux.intel.com>,
linux-perf-users@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [PATCH v1] perf parse-events: Avoid string for PE_BP_COLON, PE_BP_SLASH
There's no need to read the string ':' or '/' for PE_BP_COLON or
PE_BP_SLASH and doing so causes parse-events.y to leak memory.
The original patch has a committer note about not using these tokens
presumably as yacc spotted they were a memory leak because no
%destructor could be run. Remove the unused token workaround as there
is now no value associated with these tokens.
Fixes: f0617f526cb0 ("perf parse: Allow config terms with breakpoints")
Signed-off-by: Ian Rogers <irogers@...gle.com>
---
tools/perf/util/parse-events.h | 4 ----
tools/perf/util/parse-events.l | 4 ++--
tools/perf/util/parse-events.y | 9 ---------
3 files changed, 2 insertions(+), 15 deletions(-)
diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h
index 5fdc1f33f57e..b0eb95f93e9c 100644
--- a/tools/perf/util/parse-events.h
+++ b/tools/perf/util/parse-events.h
@@ -228,10 +228,6 @@ void parse_events_error__handle(struct parse_events_error *err, int idx,
void parse_events_error__print(struct parse_events_error *err,
const char *event);
-static inline void parse_events_unused_value(const void *x __maybe_unused)
-{
-}
-
#ifdef HAVE_LIBELF_SUPPORT
/*
* If the probe point starts with '%',
diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
index 7629af3d5c7c..99335ec586ae 100644
--- a/tools/perf/util/parse-events.l
+++ b/tools/perf/util/parse-events.l
@@ -315,13 +315,13 @@ r0x{num_raw_hex} { return str(yyscanner, PE_RAW); }
* are the same, so trailing context can be used disambiguate the two
* cases.
*/
-":"/{modifier_bp} { return str(yyscanner, PE_BP_COLON); }
+":"/{modifier_bp} { return PE_BP_COLON; }
/*
* The slash before memory length can get mixed up with the slash before
* config terms. Fortunately config terms do not start with a numeric
* digit, so trailing context can be used disambiguate the two cases.
*/
-"/"/{digit} { return str(yyscanner, PE_BP_SLASH); }
+"/"/{digit} { return PE_BP_SLASH; }
"/"/{non_digit} { BEGIN(config); return '/'; }
{num_dec} { return value(yyscanner, 10); }
{num_hex} { return value(yyscanner, 16); }
diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
index 0c3d086cc22a..9f28d4b5502f 100644
--- a/tools/perf/util/parse-events.y
+++ b/tools/perf/util/parse-events.y
@@ -80,8 +80,6 @@ static void free_list_evsel(struct list_head* list_evsel)
%type <str> PE_LEGACY_CACHE
%type <str> PE_MODIFIER_EVENT
%type <str> PE_MODIFIER_BP
-%type <str> PE_BP_COLON
-%type <str> PE_BP_SLASH
%type <str> PE_EVENT_NAME
%type <str> PE_KERNEL_PMU_EVENT PE_PMU_EVENT_FAKE
%type <str> PE_DRV_CFG_TERM
@@ -510,9 +508,6 @@ PE_PREFIX_MEM PE_VALUE PE_BP_SLASH PE_VALUE PE_BP_COLON PE_MODIFIER_BP opt_event
struct list_head *list;
int err;
- parse_events_unused_value(&$3);
- parse_events_unused_value(&$5);
-
list = alloc_list();
ABORT_ON(!list);
err = parse_events_add_breakpoint(_parse_state, list,
@@ -531,8 +526,6 @@ PE_PREFIX_MEM PE_VALUE PE_BP_SLASH PE_VALUE opt_event_config
struct list_head *list;
int err;
- parse_events_unused_value(&$3);
-
list = alloc_list();
ABORT_ON(!list);
err = parse_events_add_breakpoint(_parse_state, list,
@@ -550,8 +543,6 @@ PE_PREFIX_MEM PE_VALUE PE_BP_COLON PE_MODIFIER_BP opt_event_config
struct list_head *list;
int err;
- parse_events_unused_value(&$3);
-
list = alloc_list();
ABORT_ON(!list);
err = parse_events_add_breakpoint(_parse_state, list,
--
2.41.0.162.gfafddb0af9-goog
Powered by blists - more mailing lists