From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Andi Kleen <andi@firstfloor.org>
Cc: jolsa@kernel.org, linux-kernel@vger.kernel.org,
Andi Kleen <ak@linux.intel.com>
Subject: Re: [PATCH 2/2] perf, tools: Avoid segfault on alias parse error
Date: Thu, 17 Aug 2017 13:42:13 -0300 [thread overview]
Message-ID: <20170817164213.GE10891@kernel.org> (raw)
In-Reply-To: <20170817152816.GC10891@kernel.org>
Em Thu, Aug 17, 2017 at 12:28:16PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Wed, Aug 16, 2017 at 03:02:01PM -0700, Andi Kleen escreveu:
> > +++ b/tools/perf/util/parse-events.h
> > @@ -108,15 +108,17 @@ struct parse_events_error {
> > char *help; /* optional help string */
> > };
> >
> > +/* error field must match parse_events_terms */
Argh, this seems to be the oddity that causes these problems, a void
pointer is passed around and sometimes code thinks it is a
struct_parse_events_evlist pointer, like in
#line 117 "util/parse-events.y" /* yacc.c:1646 */
{
struct parse_events_evlist *data = _data;
parse_events_update_lists((yyvsp[0].head), &data->list);
}
#line 1503 "/tmp/build/perf/util/parse-events-bison.c" /* yacc.c:1646 */
while sometimes it thinks it is something else, like in:
case 52:
#line 496 "util/parse-events.y" /* yacc.c:1646 */
{
struct parse_events_terms *data = _data;
data->terms = (yyvsp[0].head);
}
#line 1931 "/tmp/build/perf/util/parse-events-bison.c" /* yacc.c:1646 */
So it will _not_ set to null a member that it doesn't have, i.e. the
minimal fix is to just have the hunks below, making sure that the error
field is present in both structs. No need to set
parse_event_terms->error to anything, it will be set to null since other
fields are set to something.
Longer term we need to fix this mess wrt that "_data" void pointer...
- Arnaldo
> > struct parse_events_evlist {
> > + struct parse_events_error *error;
> > struct list_head list;
> > int idx;
> > int nr_groups;
> > - struct parse_events_error *error;
> > struct perf_evlist *evlist;
> > };
> >
> > struct parse_events_terms {
> > + struct parse_events_error *error;
> > struct list_head *terms;
> > };
> >
> > --
> > 2.9.4
next prev parent reply other threads:[~2017-08-17 16:42 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-16 22:01 Two minor perf patches preparing for Skylake server events Andi Kleen
2017-08-16 22:02 ` [PATCH 1/2] perf, tools, json: Support FCMask and PortMask Andi Kleen
2017-08-17 15:20 ` Arnaldo Carvalho de Melo
2017-08-22 10:23 ` [tip:perf/core] perf jevents: " tip-bot for Andi Kleen
2017-08-16 22:02 ` [PATCH 2/2] perf, tools: Avoid segfault on alias parse error Andi Kleen
2017-08-17 15:28 ` Arnaldo Carvalho de Melo
2017-08-17 15:34 ` Andi Kleen
2017-08-17 16:25 ` Arnaldo Carvalho de Melo
2017-08-17 17:02 ` Andi Kleen
2017-08-17 16:42 ` Arnaldo Carvalho de Melo [this message]
2017-08-17 17:04 ` Andi Kleen
2017-08-17 17:22 ` Arnaldo Carvalho de Melo
2017-08-22 7:23 ` Jiri Olsa
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=20170817164213.GE10891@kernel.org \
--to=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=andi@firstfloor.org \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
/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