All of lore.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Casey Chen <cachen@purestorage.com>
Cc: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
	irogers@google.com, yzhong@purestorage.com
Subject: Re: [PATCHv5] perf tool: fix dereferencing NULL al->maps
Date: Wed, 24 Jul 2024 13:22:57 -0700	[thread overview]
Message-ID: <ZqFiodizE7xq5SV-@google.com> (raw)
In-Reply-To: <CALCePG3sqCCJyRaUOiE0TqDCGmOdw7B38hBzs9PvF5EgPjU8EA@mail.gmail.com>

On Wed, Jul 24, 2024 at 11:51:44AM -0700, Casey Chen wrote:
> On Wed, Jul 24, 2024 at 9:19 AM Namhyung Kim <namhyung@kernel.org> wrote:
> >
> > Hello,
> >
> > On Tue, Jul 23, 2024 at 6:01 PM Casey Chen <cachen@purestorage.com> wrote:
> > >
> > > Ian / Namhyung,
> > >
> > > Could you take a look at the latest diff PATCHv5 ?
> > >
> > > Thanks,
> > > Casey
> > >
> > > On Mon, Jul 22, 2024 at 2:15 PM Casey Chen <cachen@purestorage.com> wrote:
> > > >
> > > > With 0dd5041c9a0e ("perf addr_location: Add init/exit/copy functions"),
> > > > when cpumode is 3 (macro PERF_RECORD_MISC_HYPERVISOR),
> > > > thread__find_map() could return with al->maps being NULL.
> > > >
> > > > The path below could add a callchain_cursor_node with NULL ms.maps.
> > > >
> > > > add_callchain_ip()
> > > >   thread__find_symbol(.., &al)
> > > >     thread__find_map(.., &al)   // al->maps becomes NULL
> > > >   ms.maps = maps__get(al.maps)
> > > >   callchain_cursor_append(..., &ms, ...)
> > > >     node->ms.maps = maps__get(ms->maps)
> > > >
> > > > Then the path below would dereference NULL maps and get segfault.
> > > >
> > > > fill_callchain_info()
> > > >   maps__machine(node->ms.maps);
> > > >
> > > > Fix it by checking if maps is NULL in fill_callchain_info().
> > > >
> > > > Signed-off-by: Casey Chen <cachen@purestorage.com>
> > > > Reviewed-by: Ian Rogers <irogers@google.com>
> >
> > Acked-by: Namhyung Kim <namhyung@kernel.org>
> >
> > Thanks,
> > Namhyung
> >
> >
> > > > ---
> > > >  tools/perf/util/callchain.c | 2 +-
> > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > >
> > > > diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c
> > > > index 1730b852a947..6d075648d2cc 100644
> > > > --- a/tools/perf/util/callchain.c
> > > > +++ b/tools/perf/util/callchain.c
> > > > @@ -1141,7 +1141,7 @@ int hist_entry__append_callchain(struct hist_entry *he, struct perf_sample *samp
> > > >  int fill_callchain_info(struct addr_location *al, struct callchain_cursor_node *node,
> > > >                         bool hide_unresolved)
> > > >  {
> > > > -       struct machine *machine = maps__machine(node->ms.maps);
> > > > +       struct machine *machine = node->ms.maps ? maps__machine(node->ms.maps) : NULL;
> > > >
> > > >         maps__put(al->maps);
> > > >         al->maps = maps__get(node->ms.maps);
> > > > --
> > > > 2.45.2
> > > >
> 
> Thanks Namhyung.
> I have another question. When will this patch get merged into master
> branch or 6.6 release line ? Our benchmark systems depend on this fix
> to do performance analysis. Currently, both our kernel and perf are on
> 6.6.9 and they build separately. We want to update perf hash without
> patching it locally.

I'll route it to v6.11 through perf-tools tree.  Hopefully it'd get
backported to stable kernels later.

Thanks,
Namhyung


  reply	other threads:[~2024-07-24 20:22 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-22 21:15 [PATCHv5] perf tool: fix dereferencing NULL al->maps Casey Chen
2024-07-24  1:01 ` Casey Chen
2024-07-24 16:19   ` Namhyung Kim
2024-07-24 18:51     ` Casey Chen
2024-07-24 20:22       ` Namhyung Kim [this message]
2024-07-26 14:07 ` Arnaldo Carvalho de Melo

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=ZqFiodizE7xq5SV-@google.com \
    --to=namhyung@kernel.org \
    --cc=cachen@purestorage.com \
    --cc=irogers@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=yzhong@purestorage.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.