From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Namhyung Kim <namhyung@kernel.org>, 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: Fri, 26 Jul 2024 11:07:12 -0300 [thread overview]
Message-ID: <ZqOtkPGcijWW52aj@x1> (raw)
In-Reply-To: <20240722211548.61455-1-cachen@purestorage.com>
On Mon, Jul 22, 2024 at 03:15:48PM -0600, Casey Chen 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>
Reviewed-by: Arnaldo Carvalho de Melo <acme@redhat.com>
- Arnaldo
> ---
> 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
>
prev parent reply other threads:[~2024-07-26 14:07 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
2024-07-26 14:07 ` Arnaldo Carvalho de Melo [this message]
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=ZqOtkPGcijWW52aj@x1 \
--to=acme@kernel.org \
--cc=cachen@purestorage.com \
--cc=irogers@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=namhyung@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.