To reduce the boilerplate code, refactor futex_numa_mpol test to use
kselftest_harness header instead of futex's logging header.

Using kselftest_harness produces a side effect of having two adjacents
buffers, because test_harness_run() calls mmap() before this test
calling mmap(). This makes the "Memory out of range" subtest fail,
because the test address falls inside the first mmap() region, thus
being a valid address. Create a "buffer zone" with mmap(PROT_NONE) to
make sure there's invalid memory between the two mmaps and munmap() them
by the end of the test.

Signed-off-by: André Almeida <andrealm...@igalia.com>
---
 .../selftests/futex/functional/futex_numa_mpol.c   | 57 ++++++++--------------
 tools/testing/selftests/futex/functional/run.sh    | 15 +-----
 2 files changed, 21 insertions(+), 51 deletions(-)

diff --git a/tools/testing/selftests/futex/functional/futex_numa_mpol.c 
b/tools/testing/selftests/futex/functional/futex_numa_mpol.c
index 
a9ecfb2d3932add7e560d885dc2088313fbb63bb..8d8d117b095f267af08fddcf13337f4674c44863
 100644
--- a/tools/testing/selftests/futex/functional/futex_numa_mpol.c
+++ b/tools/testing/selftests/futex/functional/futex_numa_mpol.c
@@ -16,9 +16,9 @@
 #include <linux/futex.h>
 #include <sys/mman.h>
 
-#include "logging.h"
 #include "futextest.h"
 #include "futex2test.h"
+#include "../../kselftest_harness.h"
 
 #define MAX_THREADS    64
 
@@ -130,44 +130,25 @@ static void test_futex_mpol(void *futex_ptr, int 
must_fail)
        __test_futex(futex_ptr, must_fail, FUTEX2_SIZE_U32 | FUTEX_PRIVATE_FLAG 
| FUTEX2_NUMA | FUTEX2_MPOL);
 }
 
-static void usage(char *prog)
-{
-       printf("Usage: %s\n", prog);
-       printf("  -c    Use color\n");
-       printf("  -h    Display this help message\n");
-       printf("  -v L  Verbosity level: %d=QUIET %d=CRITICAL %d=INFO\n",
-              VQUIET, VCRITICAL, VINFO);
-}
-
-int main(int argc, char *argv[])
+TEST(futex_numa_mpol)
 {
        struct futex32_numa *futex_numa;
        int mem_size, i;
-       void *futex_ptr;
-       int c;
-
-       while ((c = getopt(argc, argv, "chv:")) != -1) {
-               switch (c) {
-               case 'c':
-                       log_color(1);
-                       break;
-               case 'h':
-                       usage(basename(argv[0]));
-                       exit(0);
-                       break;
-               case 'v':
-                       log_verbosity(atoi(optarg));
-                       break;
-               default:
-                       usage(basename(argv[0]));
-                       exit(1);
-               }
-       }
-
-       ksft_print_header();
-       ksft_set_plan(1);
+       void *futex_ptr, *buffer_zone;
 
        mem_size = sysconf(_SC_PAGE_SIZE);
+
+       /*
+        * test_harness_run() calls mmap(..., MAP_SHARED, ...), which can create
+        * a valid access memory region just bellow the mmap() issue here. Then,
+        * the test for "Memory out of range" will fail because it will succeed
+        * accessing the memory address after the range. To avoid this we create
+        * a "Buffer zone" with PROT_NONE between the two mmap's.
+        */
+       buffer_zone = mmap(NULL, mem_size, PROT_NONE, MAP_PRIVATE | 
MAP_ANONYMOUS, 0, 0);
+       if (buffer_zone == MAP_FAILED)
+               ksft_exit_fail_msg("mmap() for %d bytes failed\n", mem_size);
+
        futex_ptr = mmap(NULL, mem_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | 
MAP_ANONYMOUS, 0, 0);
        if (futex_ptr == MAP_FAILED)
                ksft_exit_fail_msg("mmap() for %d bytes failed\n", mem_size);
@@ -229,7 +210,9 @@ int main(int argc, char *argv[])
                        }
                }
        }
-       ksft_test_result_pass("NUMA MPOL tests passed\n");
-       ksft_finished();
-       return 0;
+
+       munmap(buffer_zone, mem_size);
+       munmap(futex_ptr, mem_size);
 }
+
+TEST_HARNESS_MAIN
diff --git a/tools/testing/selftests/futex/functional/run.sh 
b/tools/testing/selftests/futex/functional/run.sh
index 
f725531f06c4a88e6d3ebbabb628a5d5009eaa3b..e88545c06d57a7b202e9a65a66d129996b4ebd27
 100755
--- a/tools/testing/selftests/futex/functional/run.sh
+++ b/tools/testing/selftests/futex/functional/run.sh
@@ -18,19 +18,6 @@
 #
 ###############################################################################
 
-# Test for a color capable console
-if [ -z "$USE_COLOR" ]; then
-    tput setf 7 || tput setaf 7
-    if [ $? -eq 0 ]; then
-        USE_COLOR=1
-        tput sgr0
-    fi
-fi
-if [ "$USE_COLOR" -eq 1 ]; then
-    COLOR="-c"
-fi
-
-
 echo
 ./futex_requeue_pi
 
@@ -63,4 +50,4 @@ echo
 ./futex_priv_hash
 
 echo
-./futex_numa_mpol $COLOR
+./futex_numa_mpol

-- 
2.50.1


Reply via email to