All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Ian Rogers" <irogers@google.com>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v1 04/14] perf test: Support dynamic test suites with setup callback and private data
Date: Thu, 14 May 2026 12:10:14 +0000	[thread overview]
Message-ID: <20260514121018.EEC57C2BCB3@smtp.kernel.org> (raw)
In-Reply-To: <20260513230450.529380-5-irogers@google.com>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Missing NULL check for calloc in build_suites() leads to a crash on allocation failure.
- [Medium] A single test suite's setup() failure aborts the entire test framework and falsely reports -ENOMEM.
--

commit 9dbcf7d7448f74d767101a565265a0d2a73268e7
Author: Ian Rogers <irogers@google.com>

perf test: Support dynamic test suites with setup callback and private data

This commit adds a setup callback to test_suite and a private data
pointer to test_case to allow for dynamic test case generation. The
build_suites function is updated to invoke the setup callback for each
suite if it is present. Callers of build_suites are also updated to
return -ENOMEM on failure.

> diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c
> index e88a5f72faed3..a350db071674a 100644
> --- a/tools/perf/tests/builtin-test.c
> +++ b/tools/perf/tests/builtin-test.c
[ ... ]
> @@ -764,8 +764,15 @@ static struct test_suite **build_suites(void)
>  	for (size_t i = 0, j = 0; i < ARRAY_SIZE(suites); i++, j = 0)	\
>  		while ((suite = suites[i][j++]) != NULL)
>  
> -	for_each_suite(t)
> +	for_each_suite(t) {
> +		if (t->setup) {
> +			int ret = t->setup(t);
> +
> +			if (ret < 0)
> +				return NULL;

If a single test suite's setup() callback returns an error code like
-EPERM or -ENOENT, does it cause build_suites() to abort entirely by
returning a NULL pointer?

> +		}
>  		num_suites++;
> +	}
>  
>  	result = calloc(num_suites + 1, sizeof(struct test_suite *));

Since the callers in cmd_test() were updated to check if build_suites()
returns a NULL pointer to handle allocation failures, does the calloc()
here also need a check to prevent a NULL pointer dereference? If calloc()
fails, result[n++] = t will be executed unconditionally on the next pass.

[ ... ]
> @@ -830,6 +837,8 @@ int cmd_test(int argc, const char **argv)
>  	argc = parse_options_subcommand(argc, argv, test_options, test_subcommands, test_usage, 0);
>  	if (argc >= 1 && !strcmp(argv[0], "list")) {
>  		suites = build_suites();
> +		if (!suites)
> +			return -ENOMEM;

Because build_suites() returns a NULL pointer when any test suite fails
setup(), cmd_test() will map this to -ENOMEM and abort. Could this
regression cause a localized failure in one dynamic suite to prevent all
other static test suites from running or being listed, while also masking
the actual error code from the user?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260513230450.529380-1-irogers@google.com?part=4

  reply	other threads:[~2026-05-14 12:10 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-13 23:04 [PATCH v1 00/14] perf test: Harness improvements Ian Rogers
2026-05-13 23:04 ` [PATCH v1 01/14] perf jevents.py: Make generated C code more kernel style Ian Rogers
2026-05-13 23:04 ` [PATCH v1 02/14] perf pmu-events: Add API to get metric table name and iterate tables Ian Rogers
2026-05-14 11:42   ` sashiko-bot
2026-05-13 23:04 ` [PATCH v1 03/14] perf test: Drain pipe after child finishes to avoid losing output Ian Rogers
2026-05-13 23:04 ` [PATCH v1 04/14] perf test: Support dynamic test suites with setup callback and private data Ian Rogers
2026-05-14 12:10   ` sashiko-bot [this message]
2026-05-13 23:04 ` [PATCH v1 05/14] perf test pmu-events: A sub-test per metric table Ian Rogers
2026-05-13 23:04 ` [PATCH v1 06/14] perf test: Refactor parallel poll loop to drain all pipes simultaneously Ian Rogers
2026-05-14 14:27   ` sashiko-bot
2026-05-13 23:04 ` [PATCH v1 07/14] perf test: Show snippet failure output for verbose=1 Ian Rogers
2026-05-14 15:50   ` sashiko-bot
2026-05-13 23:04 ` [PATCH v1 08/14] perf test: Add summary reporting Ian Rogers
2026-05-14 16:10   ` sashiko-bot
2026-05-13 23:04 ` [PATCH v1 09/14] perf test: Fix subtest status alignment for multi-digit indexes Ian Rogers
2026-05-13 23:04 ` [PATCH v1 10/14] perf test: Skip shebang and SPDX comments in shell test descriptions Ian Rogers
2026-05-13 23:04 ` [PATCH v1 11/14] perf test: Split monolithic 'util' test suite into sub-tests Ian Rogers
2026-05-13 23:04 ` [PATCH v1 12/14] perf test: Add -j/--junit option for JUnit XML test reports Ian Rogers
2026-05-14 17:48   ` sashiko-bot
2026-05-13 23:04 ` [PATCH v1 13/14] perf test: Add shell test to validate JUnit XML reporting output Ian Rogers
2026-05-13 23:04 ` [PATCH v1 14/14] perf test: Remove /usr/bin/cc dependency from Intel PT shell test Ian Rogers
2026-05-14 18:28   ` 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=20260514121018.EEC57C2BCB3@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=irogers@google.com \
    --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.