bpf: Exercise syscall operations for inode and sk storage
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. Signed-off-by: KP Singh <kpsingh@google.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Martin KaFai Lau <kafai@fb.com> Link: https://lore.kernel.org/bpf/20201106103747.2780972-10-kpsingh@chromium.org
This commit is contained in:
parent
9cde3beead
commit
4170bc6baa
|
@ -157,7 +157,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();
|
||||
|
@ -181,6 +181,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
|
||||
|
@ -209,11 +218,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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue