selftests/bpf: Test that module can't be unloaded with attached trampoline
Adding test to verify that once we attach module's trampoline, the module can't be unloaded. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20210414195147.1624932-7-jolsa@kernel.org
This commit is contained in:
parent
cede72ad36
commit
a1c05c3b09
@ -45,12 +45,18 @@ static int trigger_module_test_write(int write_sz)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int delete_module(const char *name, int flags)
|
||||
{
|
||||
return syscall(__NR_delete_module, name, flags);
|
||||
}
|
||||
|
||||
void test_module_attach(void)
|
||||
{
|
||||
const int READ_SZ = 456;
|
||||
const int WRITE_SZ = 457;
|
||||
struct test_module_attach* skel;
|
||||
struct test_module_attach__bss *bss;
|
||||
struct bpf_link *link;
|
||||
int err;
|
||||
|
||||
skel = test_module_attach__open();
|
||||
@ -84,6 +90,23 @@ void test_module_attach(void)
|
||||
ASSERT_EQ(bss->fexit_ret, -EIO, "fexit_tet");
|
||||
ASSERT_EQ(bss->fmod_ret_read_sz, READ_SZ, "fmod_ret");
|
||||
|
||||
test_module_attach__detach(skel);
|
||||
|
||||
/* attach fentry/fexit and make sure it get's module reference */
|
||||
link = bpf_program__attach(skel->progs.handle_fentry);
|
||||
if (!ASSERT_OK_PTR(link, "attach_fentry"))
|
||||
goto cleanup;
|
||||
|
||||
ASSERT_ERR(delete_module("bpf_testmod", 0), "delete_module");
|
||||
bpf_link__destroy(link);
|
||||
|
||||
link = bpf_program__attach(skel->progs.handle_fexit);
|
||||
if (!ASSERT_OK_PTR(link, "attach_fexit"))
|
||||
goto cleanup;
|
||||
|
||||
ASSERT_ERR(delete_module("bpf_testmod", 0), "delete_module");
|
||||
bpf_link__destroy(link);
|
||||
|
||||
cleanup:
|
||||
test_module_attach__destroy(skel);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user