Skip to content

Commit

Permalink
selftests/mm: mseal, self_elf: factor out test macros and other dupli…
Browse files Browse the repository at this point in the history
…cated items

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>
  • Loading branch information
johnhubbard authored and akpm00 committed Jul 4, 2024
1 parent 504d8a5 commit 5f9b751
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 80 deletions.
1 change: 1 addition & 0 deletions tools/testing/selftests/mm/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
41 changes: 41 additions & 0 deletions tools/testing/selftests/mm/mseal_helpers.h
Original file line number Diff line number Diff line change
@@ -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
49 changes: 1 addition & 48 deletions tools/testing/selftests/mm/mseal_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,54 +17,7 @@
#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)
{
Expand Down
33 changes: 1 addition & 32 deletions tools/testing/selftests/mm/seal_elf.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,38 +16,7 @@
#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.
Expand Down

0 comments on commit 5f9b751

Please sign in to comment.