From: Ian Rogers <irogers@google.com>
To: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Martin KaFai Lau <kafai@fb.com>, Song Liu <songliubraving@fb.com>,
Yonghong Song <yhs@fb.com>, Andi Kleen <ak@linux.intel.com>,
Jin Yao <yao.jin@linux.intel.com>,
Adrian Hunter <adrian.hunter@intel.com>,
Kan Liang <kan.liang@linux.intel.com>,
John Garry <john.garry@huawei.com>,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
bpf@vger.kernel.org, clang-built-linux@googlegroups.com
Cc: Stephane Eranian <eranian@google.com>, Ian Rogers <irogers@google.com>
Subject: [PATCH v5 00/10] Improvements to memory usage by parse events
Date: Wed, 30 Oct 2019 15:34:38 -0700 [thread overview]
Message-ID: <20191030223448.12930-1-irogers@google.com> (raw)
In-Reply-To: <20191025180827.191916-1-irogers@google.com>
The parse events parser leaks memory for certain expressions as well
as allowing a char* to reference stack, heap or .rodata. This series
of patches improves the hygeine and adds free-ing operations to
reclaim memory in the parser in error and non-error situations.
The series of patches was generated with LLVM's address sanitizer and
libFuzzer:
https://llvm.org/docs/LibFuzzer.html
called on the parse_events function with randomly generated input. With
the patches no leaks or memory corruption issues were present.
The v5 patches add initial error print to the set, as requested by
Jiri Olsa. They also fix additional 2 missed frees in the patch
'before yyabort-ing free components' and remove a redundant new_str
variable from the patch 'add parse events handle error' as spotted by
Stephane Eranian.
The v4 patches address review comments from Jiri Olsa, turning a long
error message into a single warning, fixing the data type in a list
iterator and reordering patches.
The v3 patches address review comments from Jiri Olsa improving commit
messages, handling ENOMEM errors from strdup better, and removing a
printed warning if an invalid event is passed.
The v2 patches are preferable to an earlier proposed patch:
perf tools: avoid reading out of scope array
Ian Rogers (10):
perf tools: add parse events handle error
perf tools: move ALLOC_LIST into a function
perf tools: avoid a malloc for array events
perf tools: splice events onto evlist even on error
perf tools: ensure config and str in terms are unique
perf tools: add destructors for parse event terms
perf tools: before yyabort-ing free components
perf tools: if pmu configuration fails free terms
perf tools: add a deep delete for parse event terms
perf tools: report initial event parsing error
tools/perf/arch/powerpc/util/kvm-stat.c | 9 +-
tools/perf/builtin-stat.c | 2 +
tools/perf/builtin-trace.c | 16 +-
tools/perf/tests/parse-events.c | 3 +-
tools/perf/util/metricgroup.c | 2 +-
tools/perf/util/parse-events.c | 236 ++++++++++----
tools/perf/util/parse-events.h | 7 +
tools/perf/util/parse-events.y | 390 +++++++++++++++++-------
tools/perf/util/pmu.c | 32 +-
9 files changed, 509 insertions(+), 188 deletions(-)
--
2.24.0.rc1.363.gb1bccd3e3d-goog
next prev parent reply other threads:[~2019-10-30 22:35 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20191017170531.171244-1-irogers@google.com>
2019-10-23 0:53 ` [PATCH v2 0/9] Improvements to memory usage by parse events Ian Rogers
2019-10-23 0:53 ` [PATCH v2 1/9] perf tools: add parse events append error Ian Rogers
2019-10-23 8:36 ` Jiri Olsa
2019-10-23 0:53 ` [PATCH v2 2/9] perf tools: splice events onto evlist even on error Ian Rogers
2019-10-23 8:40 ` Jiri Olsa
2019-10-23 0:53 ` [PATCH v2 3/9] perf tools: ensure config and str in terms are unique Ian Rogers
2019-10-23 8:50 ` Jiri Olsa
2019-10-23 0:53 ` [PATCH v2 4/9] perf tools: move ALLOC_LIST into a function Ian Rogers
2019-10-23 8:55 ` Jiri Olsa
2019-10-23 12:37 ` Arnaldo Carvalho de Melo
2019-11-12 11:18 ` [tip: perf/core] perf tools: Move " tip-bot2 for Ian Rogers
2019-10-23 0:53 ` [PATCH v2 5/9] perf tools: avoid a malloc for array events Ian Rogers
2019-10-23 8:58 ` Jiri Olsa
2019-10-23 12:38 ` Arnaldo Carvalho de Melo
2019-11-12 11:18 ` [tip: perf/core] perf tools: Avoid a malloc() " tip-bot2 for Ian Rogers
2019-10-23 0:53 ` [PATCH v2 6/9] perf tools: add destructors for parse event terms Ian Rogers
2019-10-23 9:01 ` Jiri Olsa
2019-10-24 19:03 ` Ian Rogers
2019-10-23 0:53 ` [PATCH v2 7/9] perf tools: before yyabort-ing free components Ian Rogers
2019-10-23 0:53 ` [PATCH v2 8/9] perf tools: if pmu configuration fails free terms Ian Rogers
2019-10-23 0:53 ` [PATCH v2 9/9] perf tools: add a deep delete for parse event terms Ian Rogers
2019-10-24 19:01 ` [PATCH v3 0/9] Improvements to memory usage by parse events Ian Rogers
2019-10-24 19:01 ` [PATCH v3 1/9] perf tools: add parse events append error Ian Rogers
2019-10-25 7:58 ` Jiri Olsa
2019-10-25 15:14 ` Ian Rogers
2019-10-28 19:32 ` Jiri Olsa
2019-10-28 21:06 ` Ian Rogers
2019-10-28 21:36 ` Jiri Olsa
2019-11-04 20:37 ` Ian Rogers
2019-10-24 19:01 ` [PATCH v3 2/9] perf tools: splice events onto evlist even on error Ian Rogers
2019-10-25 8:01 ` Jiri Olsa
2019-10-25 15:47 ` Ian Rogers
2019-10-28 21:06 ` Jiri Olsa
2019-10-24 19:01 ` [PATCH v3 3/9] perf tools: ensure config and str in terms are unique Ian Rogers
2019-10-25 8:10 ` Jiri Olsa
2019-10-25 15:52 ` Ian Rogers
2019-10-24 19:01 ` [PATCH v3 4/9] perf tools: move ALLOC_LIST into a function Ian Rogers
2019-10-24 19:01 ` [PATCH v3 5/9] perf tools: avoid a malloc for array events Ian Rogers
2019-10-24 19:01 ` [PATCH v3 6/9] perf tools: add destructors for parse event terms Ian Rogers
2019-10-25 8:27 ` Jiri Olsa
2019-10-25 16:08 ` Ian Rogers
2019-10-28 19:33 ` Jiri Olsa
2019-10-24 19:02 ` [PATCH v3 7/9] perf tools: before yyabort-ing free components Ian Rogers
2019-10-24 19:02 ` [PATCH v3 8/9] perf tools: if pmu configuration fails free terms Ian Rogers
2019-10-24 19:02 ` [PATCH v3 9/9] perf tools: add a deep delete for parse event terms Ian Rogers
2019-10-25 18:08 ` [PATCH v4 0/9] Improvements to memory usage by parse events Ian Rogers
2019-10-25 18:08 ` [PATCH v4 1/9] perf tools: add parse events handle error Ian Rogers
2019-10-25 18:08 ` [PATCH v4 2/9] perf tools: move ALLOC_LIST into a function Ian Rogers
2019-10-25 18:08 ` [PATCH v4 3/9] perf tools: avoid a malloc for array events Ian Rogers
2019-10-25 18:08 ` [PATCH v4 4/9] perf tools: splice events onto evlist even on error Ian Rogers
2019-10-28 21:07 ` Jiri Olsa
2019-10-30 11:56 ` Arnaldo Carvalho de Melo
2019-11-12 11:18 ` [tip: perf/core] perf tools: Splice " tip-bot2 for Ian Rogers
2019-10-25 18:08 ` [PATCH v4 5/9] perf tools: ensure config and str in terms are unique Ian Rogers
2019-10-25 18:08 ` [PATCH v4 6/9] perf tools: add destructors for parse event terms Ian Rogers
2019-10-25 18:08 ` [PATCH v4 7/9] perf tools: before yyabort-ing free components Ian Rogers
2019-10-25 18:08 ` [PATCH v4 8/9] perf tools: if pmu configuration fails free terms Ian Rogers
2019-10-25 18:08 ` [PATCH v4 9/9] perf tools: add a deep delete for parse event terms Ian Rogers
2019-10-30 22:34 ` Ian Rogers [this message]
2019-10-30 22:34 ` [PATCH v5 01/10] perf tools: add parse events handle error Ian Rogers
2019-11-06 14:06 ` Jiri Olsa
2019-11-06 14:29 ` Arnaldo Carvalho de Melo
2019-11-12 11:17 ` [tip: perf/core] perf parse: Add " tip-bot2 for Ian Rogers
2019-10-30 22:34 ` [PATCH v5 02/10] perf tools: move ALLOC_LIST into a function Ian Rogers
2019-10-30 22:34 ` [PATCH v5 03/10] perf tools: avoid a malloc for array events Ian Rogers
2019-10-30 22:34 ` [PATCH v5 04/10] perf tools: splice events onto evlist even on error Ian Rogers
2019-10-30 22:34 ` [PATCH v5 05/10] perf tools: ensure config and str in terms are unique Ian Rogers
2019-11-06 14:25 ` Jiri Olsa
2019-11-06 14:31 ` Arnaldo Carvalho de Melo
2019-11-12 11:17 ` [tip: perf/core] perf parse: Ensure " tip-bot2 for Ian Rogers
2019-10-30 22:34 ` [PATCH v5 06/10] perf tools: add destructors for parse event terms Ian Rogers
2019-11-06 14:24 ` Jiri Olsa
2019-11-06 14:35 ` Arnaldo Carvalho de Melo
2019-11-12 11:17 ` [tip: perf/core] perf parse: Add " tip-bot2 for Ian Rogers
2019-10-30 22:34 ` [PATCH v5 07/10] perf tools: before yyabort-ing free components Ian Rogers
2019-11-06 14:24 ` Jiri Olsa
2019-11-06 14:37 ` Arnaldo Carvalho de Melo
2019-11-12 11:17 ` [tip: perf/core] perf parse: Before " tip-bot2 for Ian Rogers
2019-10-30 22:34 ` [PATCH v5 08/10] perf tools: if pmu configuration fails free terms Ian Rogers
2019-11-06 14:24 ` Jiri Olsa
2019-11-06 14:38 ` Arnaldo Carvalho de Melo
2019-11-12 11:17 ` [tip: perf/core] perf parse: If " tip-bot2 for Ian Rogers
2019-10-30 22:34 ` [PATCH v5 09/10] perf tools: add a deep delete for parse event terms Ian Rogers
2019-11-06 14:24 ` Jiri Olsa
2019-11-06 14:39 ` Arnaldo Carvalho de Melo
2019-11-12 11:17 ` [tip: perf/core] perf parse: Add " tip-bot2 for Ian Rogers
2019-10-30 22:34 ` [PATCH v5 10/10] perf tools: report initial event parsing error Ian Rogers
2019-11-06 14:24 ` Jiri Olsa
2019-11-07 22:14 ` [PATCH v6 00/10] Improvements to memory usage by parse events Ian Rogers
2019-11-07 22:14 ` [PATCH v6 01/10] perf tools: add parse events handle error Ian Rogers
2019-11-07 22:14 ` [PATCH v6 02/10] perf tools: move ALLOC_LIST into a function Ian Rogers
2019-11-07 22:14 ` [PATCH v6 03/10] perf tools: avoid a malloc for array events Ian Rogers
2019-11-07 22:14 ` [PATCH v6 04/10] perf tools: splice events onto evlist even on error Ian Rogers
2019-11-07 22:14 ` [PATCH v6 05/10] perf tools: ensure config and str in terms are unique Ian Rogers
2019-11-07 22:14 ` [PATCH v6 06/10] perf tools: add destructors for parse event terms Ian Rogers
2019-11-07 22:14 ` [PATCH v6 07/10] perf tools: before yyabort-ing free components Ian Rogers
2019-11-07 22:14 ` [PATCH v6 08/10] perf tools: if pmu configuration fails free terms Ian Rogers
2019-11-07 22:14 ` [PATCH v6 09/10] perf tools: add a deep delete for parse event terms Ian Rogers
2019-11-07 22:14 ` [PATCH v6 10/10] perf tools: report initial event parsing error Ian Rogers
2019-11-07 22:23 ` [PATCH v6 00/10] Improvements to memory usage by parse events Arnaldo Carvalho de Melo
2019-11-08 18:18 ` Ian Rogers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191030223448.12930-1-irogers@google.com \
--to=irogers@google.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=clang-built-linux@googlegroups.com \
--cc=daniel@iogearbox.net \
--cc=eranian@google.com \
--cc=john.garry@huawei.com \
--cc=jolsa@redhat.com \
--cc=kafai@fb.com \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=songliubraving@fb.com \
--cc=yao.jin@linux.intel.com \
--cc=yhs@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).