Move set_bpf_jit_harden to testing helpers so that other selftests can
change the hardening configuration without re-implementing a helper.

Signed-off-by: Alexis LothorĂ© (eBPF Foundation) <[email protected]>
---
Changes in v3:
- new patch
---
 .../selftests/bpf/prog_tests/bpf_insn_array.c      | 41 ++--------------------
 tools/testing/selftests/bpf/testing_helpers.c      | 32 +++++++++++++++++
 tools/testing/selftests/bpf/testing_helpers.h      |  1 +
 3 files changed, 36 insertions(+), 38 deletions(-)

diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_insn_array.c 
b/tools/testing/selftests/bpf/prog_tests/bpf_insn_array.c
index 0222a9a5d076..37c405fc2b0d 100644
--- a/tools/testing/selftests/bpf/prog_tests/bpf_insn_array.c
+++ b/tools/testing/selftests/bpf/prog_tests/bpf_insn_array.c
@@ -227,42 +227,6 @@ static void check_incorrect_index(void)
        check_mid_insn_index();
 }
 
-static int set_bpf_jit_harden(char *level)
-{
-       char old_level;
-       int err = -1;
-       int fd = -1;
-
-       fd = open("/proc/sys/net/core/bpf_jit_harden", O_RDWR | O_NONBLOCK);
-       if (fd < 0) {
-               ASSERT_FAIL("open .../bpf_jit_harden returned %d (errno=%d)", 
fd, errno);
-               return -1;
-       }
-
-       err = read(fd, &old_level, 1);
-       if (err != 1) {
-               ASSERT_FAIL("read from .../bpf_jit_harden returned %d 
(errno=%d)", err, errno);
-               err = -1;
-               goto end;
-       }
-
-       lseek(fd, 0, SEEK_SET);
-
-       err = write(fd, level, 1);
-       if (err != 1) {
-               ASSERT_FAIL("write to .../bpf_jit_harden returned %d 
(errno=%d)", err, errno);
-               err = -1;
-               goto end;
-       }
-
-       err = 0;
-       *level = old_level;
-end:
-       if (fd >= 0)
-               close(fd);
-       return err;
-}
-
 static void check_blindness(void)
 {
        struct bpf_insn insns[] = {
@@ -272,7 +236,7 @@ static void check_blindness(void)
                BPF_MOV64_IMM(BPF_REG_0, 1),
                BPF_EXIT_INSN(),
        };
-       int prog_fd = -1, map_fd;
+       int prog_fd = -1, map_fd, ret;
        struct bpf_insn_array_value val = {};
        char bpf_jit_harden = '@'; /* non-exizsting value */
        int i;
@@ -291,7 +255,8 @@ static void check_blindness(void)
                goto cleanup;
 
        bpf_jit_harden = '2';
-       if (set_bpf_jit_harden(&bpf_jit_harden)) {
+       ret = set_bpf_jit_harden(&bpf_jit_harden);
+       if (!ASSERT_OK(ret, "set bpf_jit_harden")) {
                bpf_jit_harden = '@'; /* open, read or write failed => no write 
was done */
                goto cleanup;
        }
diff --git a/tools/testing/selftests/bpf/testing_helpers.c 
b/tools/testing/selftests/bpf/testing_helpers.c
index c970e7793dfc..737f668b35e2 100644
--- a/tools/testing/selftests/bpf/testing_helpers.c
+++ b/tools/testing/selftests/bpf/testing_helpers.c
@@ -519,6 +519,38 @@ bool is_jit_enabled(void)
        return enabled;
 }
 
+int set_bpf_jit_harden(char *level)
+{
+       char old_level;
+       int err = -1;
+       int fd = -1;
+
+       fd = open("/proc/sys/net/core/bpf_jit_harden", O_RDWR | O_NONBLOCK);
+       if (fd < 0)
+               return -1;
+
+       err = read(fd, &old_level, 1);
+       if (err != 1) {
+               err = -1;
+               goto end;
+       }
+
+       lseek(fd, 0, SEEK_SET);
+
+       err = write(fd, level, 1);
+       if (err != 1) {
+               err = -1;
+               goto end;
+       }
+
+       err = 0;
+       *level = old_level;
+end:
+       if (fd >= 0)
+               close(fd);
+       return err;
+}
+
 int stack_mprotect(void)
 {
        void *buf;
diff --git a/tools/testing/selftests/bpf/testing_helpers.h 
b/tools/testing/selftests/bpf/testing_helpers.h
index 2edc6fb7fc52..e00642afe86f 100644
--- a/tools/testing/selftests/bpf/testing_helpers.h
+++ b/tools/testing/selftests/bpf/testing_helpers.h
@@ -59,6 +59,7 @@ struct bpf_insn;
 int get_xlated_program(int fd_prog, struct bpf_insn **buf, __u32 *cnt);
 int testing_prog_flags(void);
 bool is_jit_enabled(void);
+int set_bpf_jit_harden(char *level);
 int stack_mprotect(void);
 
 #endif /* __TESTING_HELPERS_H */

-- 
2.54.0


Reply via email to