aboutsummaryrefslogtreecommitdiff
path: root/tools/testing/selftests/bpf/prog_tests/test_ima.c
diff options
context:
space:
mode:
authorGravatar Roberto Sassu <roberto.sassu@huawei.com> 2022-03-02 12:14:03 +0100
committerGravatar Alexei Starovoitov <ast@kernel.org> 2022-03-10 18:57:55 -0800
commite6dcf7bbf37c9ae72b0bc3a09d5f91dd1f5c19e1 (patch)
tree940a376670dc18a1c2cac7bc592bd6d85e229622 /tools/testing/selftests/bpf/prog_tests/test_ima.c
parentbpf-lsm: Make bpf_lsm_kernel_read_file() as sleepable (diff)
downloadlinux-e6dcf7bbf37c9ae72b0bc3a09d5f91dd1f5c19e1.tar.gz
linux-e6dcf7bbf37c9ae72b0bc3a09d5f91dd1f5c19e1.tar.bz2
linux-e6dcf7bbf37c9ae72b0bc3a09d5f91dd1f5c19e1.zip
selftests/bpf: Add test for bpf_lsm_kernel_read_file()
Test the ability of bpf_lsm_kernel_read_file() to call the sleepable functions bpf_ima_inode_hash() or bpf_ima_file_hash() to obtain a measurement of a loaded IMA policy. Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/20220302111404.193900-9-roberto.sassu@huawei.com
Diffstat (limited to 'tools/testing/selftests/bpf/prog_tests/test_ima.c')
-rw-r--r--tools/testing/selftests/bpf/prog_tests/test_ima.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/prog_tests/test_ima.c b/tools/testing/selftests/bpf/prog_tests/test_ima.c
index a0cfba0b4273..b13a141c4220 100644
--- a/tools/testing/selftests/bpf/prog_tests/test_ima.c
+++ b/tools/testing/selftests/bpf/prog_tests/test_ima.c
@@ -58,6 +58,7 @@ static void test_init(struct ima__bss *bss)
bss->use_ima_file_hash = false;
bss->enable_bprm_creds_for_exec = false;
+ bss->enable_kernel_read_file = false;
}
void test_test_ima(void)
@@ -181,6 +182,24 @@ void test_test_ima(void)
if (CHECK(err, "restore-bin #3", "err = %d\n", err))
goto close_clean;
+ /*
+ * Test #5
+ * - Goal: obtain a sample from the kernel_read_file hook
+ * - Expected result: 2 samples (./ima_setup.sh, policy_test)
+ */
+ test_init(skel->bss);
+ skel->bss->use_ima_file_hash = true;
+ skel->bss->enable_kernel_read_file = true;
+ err = _run_measured_process(measured_dir, &skel->bss->monitored_pid,
+ "load-policy");
+ if (CHECK(err, "run_measured_process #5", "err = %d\n", err))
+ goto close_clean;
+
+ err = ring_buffer__consume(ringbuf);
+ ASSERT_EQ(err, 2, "num_samples_or_err");
+ ASSERT_NEQ(ima_hash_from_bpf[0], 0, "ima_hash");
+ ASSERT_NEQ(ima_hash_from_bpf[1], 0, "ima_hash");
+
close_clean:
snprintf(cmd, sizeof(cmd), "./ima_setup.sh cleanup %s", measured_dir);
err = system(cmd);