From: sashiko-bot@kernel.org
To: "Michalis Niarchos" <michael.niarchos@gmail.com>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v2 2/4] perf tools: Fix double free and memory leak in kvm_events_record()
Date: Mon, 03 Aug 2026 13:37:36 +0000 [thread overview]
Message-ID: <20260803133737.800381F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260803-perf-kvm-fixes-v2-2-1b337189fffc@gmail.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [Medium] The patch addresses an array-mutation bug in `kvm_events_record()` but leaves identical instances of the bug unfixed in `__cmd_record()`, `__cmd_report()`, `__cmd_buildid_list()`, and `__cmd_top()`.
--
--- Patch [2]: [PATCH v2 2/4] perf tools: Fix double free and memory leak in kvm_events_record() ---
commit de06a9553df4c03dc3591b78a5d37cfb9f36b1e0
Author: Michalis Niarchos <michael.niarchos@gmail.com>
perf tools: Fix double free and memory leak in kvm_events_record()
cmd_record() reorders the contents of the rec_argv pointer array, causing
an issue where pointers are freed twice and others never freed. This patch
fixes the double free and memory leak by referencing literals directly
instead of duplicating them, removing the need to track and free each entry.
> diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c
> index 44c6998f2ee5d..45c92ab74fdd6 100644
> --- a/tools/perf/builtin-kvm.c
> +++ b/tools/perf/builtin-kvm.c
[ ... ]
> @@ -1717,9 +1717,6 @@ kvm_events_record(struct perf_kvm_stat *kvm, int argc, const char **argv)
> record_usage = kvm_stat_record_usage;
> ret = cmd_record(i, rec_argv);
>
> -EXIT:
> - for (i = 0; i < rec_argc; i++)
> - free((void *)rec_argv[i]);
[Severity: Medium]
This is a pre-existing issue, but does this exact same array-mutation bug still
exist in other functions within this file?
It looks like __cmd_record(), __cmd_report(), __cmd_buildid_list(), and
__cmd_top() all have this identical cleanup loop:
for (i = 0; i < rec_argc; i++)
free((void *)rec_argv[i]);
Since these functions also pass the allocated rec_argv array to command handlers
that use parse_options() (which consumes options in-place and shifts non-option
arguments forward), do these other commands also suffer from a double-free
and memory leak?
> free(rec_argv);
> return ret;
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260803-perf-kvm-fixes-v2-0-1b337189fffc@gmail.com?part=2
next prev parent reply other threads:[~2026-08-03 13:37 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-03 13:05 [PATCH v2 0/4] perf tools: Fix memory issues Michalis Niarchos via B4 Relay
2026-08-03 13:05 ` [PATCH v2 1/4] perf tools: Fix memory leak in cmd_kvm() Michalis Niarchos via B4 Relay
2026-08-03 13:19 ` sashiko-bot
2026-08-03 13:05 ` [PATCH v2 2/4] perf tools: Fix double free and memory leak in kvm_events_record() Michalis Niarchos via B4 Relay
2026-08-03 13:37 ` sashiko-bot [this message]
2026-08-03 13:05 ` [PATCH v2 3/4] perf tools: Fix memory leak in cmd_kvm() Michalis Niarchos via B4 Relay
2026-08-03 13:05 ` [PATCH v2 4/4] perf tools: Fix double frees and memory leaks " Michalis Niarchos via B4 Relay
2026-08-03 13:39 ` 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=20260803133737.800381F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=michael.niarchos@gmail.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox