All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Arnaldo Carvalho de Melo" <acme@kernel.org>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH 8/8] perf mem record: Request PERF_SAMPLE_CPU by default
Date: Mon, 14 Sep 2026 01:52:54 +0000	[thread overview]
Message-ID: <20260914015254.D043B1F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260914013604.7702-9-acme@kernel.org>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:

Pre-existing issues:
- [High] Heap buffer overflow in `rec_argv` due to insufficient allocation for appended arguments.
--

commit ac341d4bfb0aa8a3024f56539bc9bb8653d870f1
Author: Arnaldo Carvalho de Melo <acme@redhat.com>

perf mem record: Request PERF_SAMPLE_CPU by default

This commit adds --sample-cpu by default to perf mem record to ensure the
CPU id is captured. This allows per-sample analysis to distinguish reads
and writes to the same data from different cores.

> diff --git a/tools/perf/builtin-mem.c b/tools/perf/builtin-mem.c
> index 6101a26b3a781..a708e2549bae4 100644
> --- a/tools/perf/builtin-mem.c
> +++ b/tools/perf/builtin-mem.c
> @@ -135,6 +135,15 @@ static int __cmd_record(int argc, const char **argv, struct perf_mem *mem,
>  
>  	rec_argv[i++] = "-d";
>  
> +	/*
> +	 * The data-type profiling per-sample stream keys cross-CPU
> +	 * contention on sample->cpu (PERF_SAMPLE_CPU); without it the cpu
> +	 * field is the (u32)-1 'no CPU info' sentinel and same-instance
> +	 * reads and writes from different cores are indistinguishable
> +	 * from same-CPU traffic.
> +	 */
> +	rec_argv[i++] = "--sample-cpu";
> +

[Severity: High]
This is a pre-existing issue, but does adding --sample-cpu here
unconditionally push rec_argv further towards a heap buffer overflow?

Looking at the allocation of rec_argv earlier in __cmd_record():

    rec_argc = argc + 9 * (perf_pmu__mem_events_num_mem_pmus(pmu) + 1);
    if (mem->cpu_list)
        rec_argc += 2;
    rec_argv = calloc(rec_argc + 1, sizeof(char *));

It reserves 9 extra slots for a single PMU system. However, the explicitly
appended arguments can exceed this limit when multiple flags are used
(e.g., -W, -d, --sample-cpu, --phys-data, --data-page-size, --all-user,
--all-kernel).

When copying the original arguments at the end of the function:

    for (j = 0; j < argc; j++, i++)
        rec_argv[i] = argv[j];

If the user supplies valid memory profiling arguments that trigger the
appending of these extra flags, the total number of arguments will exceed
the reserved slots. This final loop will then write past the bounds of the
allocated array.

Should the allocation size calculation for rec_argc be updated to account
for all possible appended arguments?

>  	if (mem->phys_addr)
>  		rec_argv[i++] = "--phys-data";
>

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260914013604.7702-1-acme@kernel.org?part=8

  reply	other threads:[~2026-09-14  1:52 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-14  1:35 [PATCH v4 0/8] perf tools: Annotate fixes, stdio progress indication, debuginfo-client in more places Arnaldo Carvalho de Melo
2026-09-14  1:35 ` [PATCH 1/8] perf test: Skip data_type_profiling when the PMU cannot record memory events Arnaldo Carvalho de Melo
2026-09-14  1:41   ` sashiko-bot
2026-09-14  1:35 ` [PATCH 2/8] perf debuginfo: Fetch debuginfo keyed by build ID using debuginfod Arnaldo Carvalho de Melo
2026-09-14  1:50   ` sashiko-bot
2026-09-14  1:35 ` [PATCH 3/8] perf symbol: Fall back to fetching the vmlinux by build ID Arnaldo Carvalho de Melo
2026-09-14  1:44   ` sashiko-bot
2026-09-14  1:35 ` [PATCH 4/8] perf annotate-data: Show the sample count in the data-type browser Arnaldo Carvalho de Melo
2026-09-14  1:42   ` sashiko-bot
2026-09-14  1:36 ` [PATCH 5/8] perf report: Add --progress option Arnaldo Carvalho de Melo
2026-09-14  1:46   ` sashiko-bot
2026-09-14  1:36 ` [PATCH 6/8] perf scripts: Add perf-stuck, to tell where a running perf is stuck Arnaldo Carvalho de Melo
2026-09-14  1:44   ` sashiko-bot
2026-09-14  1:36 ` [PATCH 7/8] perf annotate-data: Resolve type DIEs in the debug file they came from Arnaldo Carvalho de Melo
2026-09-14  1:46   ` sashiko-bot
2026-09-14  1:36 ` [PATCH 8/8] perf mem record: Request PERF_SAMPLE_CPU by default Arnaldo Carvalho de Melo
2026-09-14  1:52   ` sashiko-bot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2026-09-13 22:28 [PATCH v3 0/8] perf tools: Annotate fixes, stdio progress indication, debuginfo-client in more places Arnaldo Carvalho de Melo
2026-09-13 22:28 ` [PATCH 8/8] perf mem record: Request PERF_SAMPLE_CPU by default Arnaldo Carvalho de Melo
2026-09-13 22:43   ` sashiko-bot

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=20260914015254.D043B1F000FF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=acme@kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /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.