All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: "Maciej Wieczór-Retman" <maciej.wieczor-retman@intel.com>
Cc: Reinette Chatre <reinette.chatre@intel.com>,
	Shuah Khan <skhan@linuxfoundation.org>,
	linux-kselftest@vger.kernel.org, Shuah Khan <shuah@kernel.org>,
	Fenghua Yu <fenghua.yu@intel.com>,
	Babu Moger <babu.moger@amd.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>
Subject: Re: [PATCH v3 7/7] selftests/resctrl: Cleanup benchmark argument parsing
Date: Tue, 29 Aug 2023 16:04:29 +0300 (EEST)	[thread overview]
Message-ID: <f31c39-41ce-2dc2-26e7-62466abdac2@linux.intel.com> (raw)
In-Reply-To: <eetulhaho6ci25ahafo5qn4hag2ldnztnerxpmtuvh6vp2qlfn@lkazlrcje5sl>

[-- Attachment #1: Type: text/plain, Size: 2750 bytes --]

On Tue, 29 Aug 2023, Maciej Wieczór-Retman wrote:
> On 2023-08-23 at 16:15:56 +0300, Ilpo Järvinen wrote:
> >Benchmark argument is handled by custom argument parsing code which is
> >more complicated than it needs to be.
> >
> >Process benchmark argument within the normal getopt() handling and drop
> >entirely unnecessary ben_ind and has_ben variables. If -b is not given,
> >setup the default benchmark command right after the switch statement
> >and make -b to goto over it while it terminates the getopt() loop.
> >
> >Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
> >Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
> >---
> > .../testing/selftests/resctrl/resctrl_tests.c | 71 ++++++++++---------
> > 1 file changed, 36 insertions(+), 35 deletions(-)
> >
> >diff --git a/tools/testing/selftests/resctrl/resctrl_tests.c b/tools/testing/selftests/resctrl/resctrl_tests.c
> >index 94516d1f4307..ae9001ef7b0a 100644
> >--- a/tools/testing/selftests/resctrl/resctrl_tests.c
> >+++ b/tools/testing/selftests/resctrl/resctrl_tests.c
> >@@ -169,28 +169,35 @@ static void run_cat_test(int cpu_no, int no_of_bits)
> > 
> > int main(int argc, char **argv)
> > {
> >-	bool has_ben = false, mbm_test = true, mba_test = true, cmt_test = true;
> >-	int c, cpu_no = 1, argc_new = argc, i, no_of_bits = 0;
> >+	bool mbm_test = true, mba_test = true, cmt_test = true;
> >+	int c, cpu_no = 1, i, no_of_bits = 0;
> > 	const char *benchmark_cmd[BENCHMARK_ARGS];
> >-	int ben_ind, tests = 0;
> > 	char *span_str = NULL;
> > 	bool cat_test = true;
> > 	char *skip_reason;
> >+	int tests = 0;
> > 	int ret;
> > 
> >-	for (i = 0; i < argc; i++) {
> >-		if (strcmp(argv[i], "-b") == 0) {
> >-			ben_ind = i + 1;
> >-			argc_new = ben_ind - 1;
> >-			has_ben = true;
> >-			break;
> >-		}
> >-	}
> >-
> >-	while ((c = getopt(argc_new, argv, "ht:b:n:p:")) != -1) {
> >+	while ((c = getopt(argc, argv, "ht:b:n:p:")) != -1) {
> > 		char *token;
> > 
> > 		switch (c) {
> >+		case 'b':
> >+			/*
> >+			 * First move optind back to the (first) optarg and
> >+			 * then build the benchmark command using the
> >+			 * remaining arguments.
> >+			 */
> >+			optind--;
> >+			if (argc - optind >= BENCHMARK_ARGS - 1)
> >+				ksft_exit_fail_msg("Too long benchmark command");
> 
> Isn't this condition off by two?
> 
> I did some testing and the maximum amount of benchmark arguments is 62
> while the array of const char* has 64 spaces. Is it supposed to have
> less than the maximum capacity?
> 
> Wouldn't something like this be more valid with BENCHMARK_ARGS equal to
> 64? :
> 			if (argc - optind > BENCHMARK_ARGS)

Certainly not off by two as the array must be NULL terminated but it seems 
to be off-by-one (to the safe direction), yes.

-- 
 i.

  reply	other threads:[~2023-08-29 13:06 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-23 13:15 [PATCH v3 0/7] selftests/resctrl: Rework benchmark command handling Ilpo Järvinen
2023-08-23 13:15 ` [PATCH v3 1/7] selftests/resctrl: Ensure the benchmark commands fits to its array Ilpo Järvinen
2023-08-23 13:15 ` [PATCH v3 2/7] selftests/resctrl: Correct benchmark command help Ilpo Järvinen
2023-08-30  0:53   ` Reinette Chatre
2023-08-23 13:15 ` [PATCH v3 3/7] selftests/resctrl: Remove bw_report and bm_type from main() Ilpo Järvinen
2023-08-23 13:15 ` [PATCH v3 4/7] selftests/resctrl: Simplify span lifetime Ilpo Järvinen
2023-08-23 13:15 ` [PATCH v3 5/7] selftests/resctrl: Make benchmark command const and build it with pointers Ilpo Järvinen
2023-08-30  0:53   ` Reinette Chatre
2023-08-30  8:59     ` Ilpo Järvinen
2023-08-30 17:47       ` Reinette Chatre
2023-08-31  7:10         ` Ilpo Järvinen
2023-08-23 13:15 ` [PATCH v3 6/7] selftests/resctrl: Remove ben_count variable Ilpo Järvinen
2023-08-23 13:15 ` [PATCH v3 7/7] selftests/resctrl: Cleanup benchmark argument parsing Ilpo Järvinen
2023-08-29 12:48   ` Maciej Wieczór-Retman
2023-08-29 13:04     ` Ilpo Järvinen [this message]
2023-08-29 13:23       ` Maciej Wieczór-Retman
2023-08-25  8:36 ` [PATCH v3 0/7] selftests/resctrl: Rework benchmark command handling Shaopeng Tan (Fujitsu)

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=f31c39-41ce-2dc2-26e7-62466abdac2@linux.intel.com \
    --to=ilpo.jarvinen@linux.intel.com \
    --cc=babu.moger@amd.com \
    --cc=fenghua.yu@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=maciej.wieczor-retman@intel.com \
    --cc=reinette.chatre@intel.com \
    --cc=shuah@kernel.org \
    --cc=skhan@linuxfoundation.org \
    --cc=tan.shaopeng@jp.fujitsu.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.