perf parse: Use YYABORT to clear stack after failure, plugging leaks
authorIan Rogers <irogers@google.com>
Sat, 9 Nov 2019 07:58:40 +0000 (23:58 -0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 12 Nov 2019 11:34:16 +0000 (08:34 -0300)
Using return rather than YYABORT means that the stack isn't cleared up
following a failure. The change to YYABORT means the return value is 1
rather than -1, but the callers just check for a result of 0 (success).
Add missing free of a list when an error occurs in event_pmu.

Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.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/20191109075840.181231-1-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/parse-events.y

index 4cac830..e2eea4e 100644 (file)
@@ -284,6 +284,7 @@ PE_NAME opt_pmu_config
        do {                                            \
                parse_events_terms__delete($2);         \
                parse_events_terms__delete(orig_terms); \
+               free(list);                             \
                free($1);                               \
                free(pattern);                          \
                YYABORT;                                \
@@ -550,7 +551,7 @@ tracepoint_name opt_event_config
        free($1.event);
        if (err) {
                free(list);
-               return -1;
+               YYABORT;
        }
        $$ = list;
 }