From: KP Singh <kpsi...@google.com>

Use the check_syscall_operations added for task_local_storage to
exercise syscall operations for other local storage maps:

* Check the absence of an element for the given fd.
* Create a new element, retrieve and compare its value.
* Delete the element and check again for absence.

Acked-by: Martin KaFai Lau <ka...@fb.com>
Signed-off-by: KP Singh <kpsi...@google.com>
---
 .../bpf/prog_tests/test_local_storage.c         | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/bpf/prog_tests/test_local_storage.c 
b/tools/testing/selftests/bpf/prog_tests/test_local_storage.c
index 5b4788b97d96..2c1b4e9c9a76 100644
--- a/tools/testing/selftests/bpf/prog_tests/test_local_storage.c
+++ b/tools/testing/selftests/bpf/prog_tests/test_local_storage.c
@@ -152,7 +152,7 @@ static bool check_syscall_operations(int map_fd, int obj_fd)
 void test_test_local_storage(void)
 {
        char tmp_exec_path[PATH_MAX] = "/tmp/copy_of_rmXXXXXX";
-       int err, serv_sk = -1, task_fd = -1;
+       int err, serv_sk = -1, task_fd = -1, rm_fd = -1;
        struct local_storage *skel = NULL;
 
        skel = local_storage__open_and_load();
@@ -176,6 +176,15 @@ void test_test_local_storage(void)
        if (CHECK(err < 0, "copy_rm", "err %d errno %d\n", err, errno))
                goto close_prog;
 
+       rm_fd = open(tmp_exec_path, O_RDONLY);
+       if (CHECK(rm_fd < 0, "open", "failed to open %s err:%d, errno:%d",
+                 tmp_exec_path, rm_fd, errno))
+               goto close_prog;
+
+       if (!check_syscall_operations(bpf_map__fd(skel->maps.inode_storage_map),
+                                     rm_fd))
+               goto close_prog;
+
        /* Sets skel->bss->monitored_pid to the pid of the forked child
         * forks a child process that executes tmp_exec_path and tries to
         * unlink its executable. This operation should be denied by the loaded
@@ -204,11 +213,15 @@ void test_test_local_storage(void)
        CHECK(skel->data->sk_storage_result != 0, "sk_storage_result",
              "sk_local_storage not set\n");
 
-       close(serv_sk);
+       if (!check_syscall_operations(bpf_map__fd(skel->maps.sk_storage_map),
+                                     serv_sk))
+               goto close_prog;
 
 close_prog_unlink:
        unlink(tmp_exec_path);
 close_prog:
+       close(serv_sk);
+       close(rm_fd);
        close(task_fd);
        local_storage__destroy(skel);
 }
-- 
2.29.1.341.ge80a0c044ae-goog

Reply via email to