Linux RTC
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Wake Liu" <wakel@google.com>
Cc: linux-rtc@vger.kernel.org,
	"Alexandre Belloni" <alexandre.belloni@bootlin.com>
Subject: Re: [PATCH v2] selftests: rtc: Support harness test filtering and arguments
Date: Thu, 05 Nov 2026 03:15:03 +0000	[thread overview]
Message-ID: <sashiko-outbox-198509@kernel.org> (raw)
In-Reply-To: <20261105030834.3318480-1-wakel@google.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] selftests: rtc: incomplete getopt() reset on -h/-l in main()
--

commit 9bed5ee7eee853de78b5dce8eb5280f5ed1c8688
Author: Wake Liu <wakel@google.com>

selftests: rtc: Support harness test filtering and arguments

This commit updates main() in rtctest.c to parse command-line options with
getopt() so kselftest harness flags can be passed alongside the optional RTC
device node path.

> diff --git a/tools/testing/selftests/rtc/rtctest.c b/tools/testing/selftests/rtc/rtctest.c
> index 552191fe1ca09..eb26d957835d7 100644
> --- a/tools/testing/selftests/rtc/rtctest.c
> +++ b/tools/testing/selftests/rtc/rtctest.c
> @@ -487,18 +487,44 @@ TEST_F_TIMEOUT(rtc, alarm_wkalm_set_minute, 65) {
>  int main(int argc, char **argv)
>  {
>  	int ret = -1;
> +	int opt, i;
> +	int non_opt = 0;
> +
> +	while ((opt = getopt(argc, argv, "dhlF:f:V:v:t:T:r:")) != -1) {
> +		switch (opt) {
> +		case 'h':
> +			fprintf(stderr,
> +				"Usage: %s [-h|-l|-d] [-t|-T|-v|-V|-f|-F|-r name] [rtcdev]\n\n",
> +				argv[0]);
> +			optind = 1;
> +			return test_harness_run(argc, argv);
> +		case 'l':
> +			optind = 1;
> +			return test_harness_run(argc, argv);

[Severity: Medium]
What happens if -h or -l is passed as the first flag in a clustered short
option argument (such as -hd or -ld)?

When getopt() parses the first character in argv[1], optind is still 1 and
getopt()'s internal within-argument character cursor points to the second
character ('d'). Returning early from inside the getopt() loop after setting
optind = 1 does not reset that internal cursor when getopt() has not finished
consuming the current argument.

When main() calls test_harness_run() -> test_harness_argv_check():

tools/testing/selftests/kselftest_harness.h:test_harness_argv_check() {
    ...
    while ((opt = getopt(argc, argv, "dhlF:f:V:v:t:T:r:")) != -1) {
        switch (opt) {
        ...
        case 'h':
            test_harness_usage(argv[0]);
            return KSFT_FAIL;
        case 'l':
            __test_harness_list_tests();
            return KSFT_FAIL;
        ...
        }
    }
    return KSFT_PASS;
}

getopt() in test_harness_argv_check() resumes at 'd' instead of re-reading
'h' or 'l', returns KSFT_PASS, and runs the full RTC test suite (while also
having bypassed the access(rtc_file, R_OK) check in main()).

Would it be better to let the getopt() loop finish scanning all options (for
example by recording a flag for -h/-l or resetting optind = 0 where supported)
before calling test_harness_run()?

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

      reply	other threads:[~2026-11-05  3:15 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-10  3:48 [PATCH] selftests: rtc: Support harness test filtering and arguments Wake Liu
2026-09-10  3:53 ` sashiko-bot
2026-09-21 19:31 ` Alexandre Belloni
2026-10-11 10:41 ` Wake Liu
2026-11-05  3:08 ` [PATCH v2] " Wake Liu
2026-11-05  3:15   ` sashiko-bot [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=sashiko-outbox-198509@kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=alexandre.belloni@bootlin.com \
    --cc=linux-rtc@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=wakel@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox