[LTP] [PATCH] [PATCH] cpuset_hotplug: fix cpuset_list_compute

Cristian Marussi cristian.marussi@arm.com
Wed Nov 14 16:00:07 CET 2018


cpuset_hotplug failed with:

Usage : cpuset_list_compute [-a|s] list1 [list2]

        -a|s   list1 add/subtract list2.[default: -a]

        -h     Help.
cpuset_hotplug 1 TFAIL: root group's cpus isn't expected(Result: 0,2-5, Expect: ).

It turned out that the helper cpuset_list_compute was always failing
because it was improperly handling getopt retval using a char variable;
in such a case the while() loop used around getopt never gets false,
and as a consequence getopt() keeps on being invoked parsing also the
following unknown non-option input material: this in turn leads to
the loop termination through the default switch-label that finally
terminates the program without doing anything each time.

This condition can also be spotted during the compilation process:

cpuset_list_compute.c: In function 'checkopt':
cpuset_list_compute.c:35:41: warning: comparison is always true due to limited range of data type [-Wtype-limits]
  while ((c = getopt(argc, argv, "ahs")) != -1) {
                                         ^~

Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
---
 .../cpuset/cpuset_hotplug_test/cpuset_list_compute.c           | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_list_compute.c b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_list_compute.c
index 17a332f8a..1c66b863a 100644
--- a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_list_compute.c
+++ b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_list_compute.c
@@ -29,8 +29,7 @@ static void usage(char *prog_name, int status)
 
 static void checkopt(int argc, char **argv)
 {
-	char c = '\0';
-	int optc = 0;
+	int c, optc = 0;
 
 	while ((c = getopt(argc, argv, "ahs")) != -1) {
 		switch (c) {
-- 
2.17.1



More information about the ltp mailing list