]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests/mm: mseal, self_elf: factor out test macros and other duplicated items
authorJohn Hubbard <jhubbard@nvidia.com>
Tue, 18 Jun 2024 02:24:18 +0000 (19:24 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 4 Jul 2024 02:30:07 +0000 (19:30 -0700)
Clean up and move some copy-pasted items into a new mseal_helpers.h.

1. The test macros can be made safer and simpler, by observing that
   they are invariably called when about to return.  This means that the
   macros do not need an intrusive label to goto; they can simply return.

2. PKEY* items.  We cannot, unfortunately use pkey-helpers.h.  The
   best we can do is to factor out these few items into mseal_helpers.h.

3. These tests still need their own definition of u64, so also move
   that to the header file.

4.  Be sure to include the new mseal_helpers.h in the Makefile
   dependencies.

[jhubbard@nvidia.com: include the new mseal_helpers.h in Makefile dependencies]
Link: https://lkml.kernel.org/r/01685978-f6b1-4c24-8397-22cd3c24b91a@nvidia.com
Link: https://lkml.kernel.org/r/20240618022422.804305-3-jhubbard@nvidia.com
Signed-off-by: John Hubbard <jhubbard@nvidia.com>
Acked-by: David Hildenbrand <david@redhat.com>
Cc: Jeff Xu <jeffxu@chromium.org>
Cc: Andrei Vagin <avagin@google.com>
Cc: Axel Rasmussen <axelrasmussen@google.com>
Cc: Christian Brauner <brauner@kernel.org>
Cc: Kees Cook <kees@kernel.org>
Cc: Kent Overstreet <kent.overstreet@linux.dev>
Cc: Liam R. Howlett <Liam.Howlett@oracle.com>
Cc: Muhammad Usama Anjum <usama.anjum@collabora.com>
Cc: Peter Xu <peterx@redhat.com>
Cc: Rich Felker <dalias@libc.org>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
tools/testing/selftests/mm/Makefile
tools/testing/selftests/mm/mseal_helpers.h [new file with mode: 0644]
tools/testing/selftests/mm/mseal_test.c
tools/testing/selftests/mm/seal_elf.c

index a1748a4c7df1d5d3c929a6acb0ba3a41fa23b825..0d96c6123636c8e0192d9263334556f09070a8f7 100644 (file)
@@ -2,6 +2,7 @@
 # Makefile for mm selftests
 
 LOCAL_HDRS += $(selfdir)/mm/local_config.h $(top_srcdir)/mm/gup_test.h
+LOCAL_HDRS += $(selfdir)/mm/mseal_helpers.h
 
 include local_config.mk
 
diff --git a/tools/testing/selftests/mm/mseal_helpers.h b/tools/testing/selftests/mm/mseal_helpers.h
new file mode 100644 (file)
index 0000000..108d3fd
--- /dev/null
@@ -0,0 +1,41 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#define FAIL_TEST_IF_FALSE(test_passed)                                        \
+       do {                                                            \
+               if (!(test_passed)) {                                   \
+                       ksft_test_result_fail("%s: line:%d\n",          \
+                                               __func__, __LINE__);    \
+                       return;                                         \
+               }                                                       \
+       } while (0)
+
+#define SKIP_TEST_IF_FALSE(test_passed)                                        \
+       do {                                                            \
+               if (!(test_passed)) {                                   \
+                       ksft_test_result_skip("%s: line:%d\n",          \
+                                               __func__, __LINE__);    \
+                       return;                                         \
+               }                                                       \
+       } while (0)
+
+#define TEST_END_CHECK() ksft_test_result_pass("%s\n", __func__)
+
+#ifndef PKEY_DISABLE_ACCESS
+#define PKEY_DISABLE_ACCESS    0x1
+#endif
+
+#ifndef PKEY_DISABLE_WRITE
+#define PKEY_DISABLE_WRITE     0x2
+#endif
+
+#ifndef PKEY_BITS_PER_PKEY
+#define PKEY_BITS_PER_PKEY     2
+#endif
+
+#ifndef PKEY_MASK
+#define PKEY_MASK      (PKEY_DISABLE_ACCESS | PKEY_DISABLE_WRITE)
+#endif
+
+#ifndef u64
+#define u64 unsigned long long
+#endif
index 58c888529f42164e93b23ad5b20d160cec8c711b..d4d6ae42f5027e36356b62c816e05ec0dd391d6d 100644 (file)
 #include <sys/ioctl.h>
 #include <sys/vfs.h>
 #include <sys/stat.h>
-
-/*
- * need those definition for manually build using gcc.
- * gcc -I ../../../../usr/include   -DDEBUG -O3  -DDEBUG -O3 mseal_test.c -o mseal_test
- */
-#ifndef PKEY_DISABLE_ACCESS
-# define PKEY_DISABLE_ACCESS    0x1
-#endif
-
-#ifndef PKEY_DISABLE_WRITE
-# define PKEY_DISABLE_WRITE     0x2
-#endif
-
-#ifndef PKEY_BITS_PER_PKEY
-#define PKEY_BITS_PER_PKEY      2
-#endif
-
-#ifndef PKEY_MASK
-#define PKEY_MASK       (PKEY_DISABLE_ACCESS | PKEY_DISABLE_WRITE)
-#endif
-
-#define FAIL_TEST_IF_FALSE(c) do {\
-               if (!(c)) {\
-                       ksft_test_result_fail("%s, line:%d\n", __func__, __LINE__);\
-                       goto test_end;\
-               } \
-       } \
-       while (0)
-
-#define SKIP_TEST_IF_FALSE(c) do {\
-               if (!(c)) {\
-                       ksft_test_result_skip("%s, line:%d\n", __func__, __LINE__);\
-                       goto test_end;\
-               } \
-       } \
-       while (0)
-
-
-#define TEST_END_CHECK() {\
-               ksft_test_result_pass("%s\n", __func__);\
-               return;\
-test_end:\
-               return;\
-}
-
-#ifndef u64
-#define u64 unsigned long long
-#endif
+#include "mseal_helpers.h"
 
 static unsigned long get_vma_size(void *addr, int *prot)
 {
index 27bf2f84231d451e03d0736809b3fae0c52f776e..45c73213775b8cf65a7e5c57378e6ec12d2de53a 100644 (file)
 #include <sys/ioctl.h>
 #include <sys/vfs.h>
 #include <sys/stat.h>
-
-/*
- * need those definition for manually build using gcc.
- * gcc -I ../../../../usr/include   -DDEBUG -O3  -DDEBUG -O3 seal_elf.c -o seal_elf
- */
-#define FAIL_TEST_IF_FALSE(c) do {\
-               if (!(c)) {\
-                       ksft_test_result_fail("%s, line:%d\n", __func__, __LINE__);\
-                       goto test_end;\
-               } \
-       } \
-       while (0)
-
-#define SKIP_TEST_IF_FALSE(c) do {\
-               if (!(c)) {\
-                       ksft_test_result_skip("%s, line:%d\n", __func__, __LINE__);\
-                       goto test_end;\
-               } \
-       } \
-       while (0)
-
-
-#define TEST_END_CHECK() {\
-               ksft_test_result_pass("%s\n", __func__);\
-               return;\
-test_end:\
-               return;\
-}
-
-#ifndef u64
-#define u64 unsigned long long
-#endif
+#include "mseal_helpers.h"
 
 /*
  * define sys_xyx to call syscall directly.