Create a task, call bpf_get_task_cmdline to retrieve the cmdline, and check if it succeeds. Signed-off-by: Tao Chen --- tools/testing/selftests/bpf/prog_tests/task_kfunc.c | 11 +++++++++++ .../selftests/bpf/progs/task_kfunc_success.c | 13 +++++++++++++ 2 files changed, 24 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/task_kfunc.c b/tools/testing/selftests/bpf/prog_tests/task_kfunc.c index 83b90335967..c23c0be357d 100644 --- a/tools/testing/selftests/bpf/prog_tests/task_kfunc.c +++ b/tools/testing/selftests/bpf/prog_tests/task_kfunc.c @@ -156,6 +156,10 @@ static const char * const vpid_success_tests[] = { "test_task_from_vpid_invalid", }; +static const char * const cmdline_success_tests[] = { + "test_get_task_cmdline", +}; + void test_task_kfunc(void) { int i; @@ -174,5 +178,12 @@ void test_task_kfunc(void) run_vpid_success_test(vpid_success_tests[i]); } + for (i = 0; i < ARRAY_SIZE(cmdline_success_tests); i++) { + if (!test__start_subtest(cmdline_success_tests[i])) + continue; + + run_success_test(cmdline_success_tests[i]); + } + RUN_TESTS(task_kfunc_failure); } diff --git a/tools/testing/selftests/bpf/progs/task_kfunc_success.c b/tools/testing/selftests/bpf/progs/task_kfunc_success.c index 5fb4fc19d26..a7c42e693da 100644 --- a/tools/testing/selftests/bpf/progs/task_kfunc_success.c +++ b/tools/testing/selftests/bpf/progs/task_kfunc_success.c @@ -367,6 +367,19 @@ int BPF_PROG(task_kfunc_acquire_trusted_walked, struct task_struct *task, u64 cl return 0; } +SEC("lsm.s/task_alloc") +int BPF_PROG(test_get_task_cmdline, struct task_struct *task) +{ + char buf[64]; + int ret; + + ret = bpf_get_task_cmdline(task, buf, sizeof(buf)); + if (ret < 0) + err = 1; + + return 0; +} + SEC("syscall") int test_task_from_vpid_current(const void *ctx) { -- 2.48.1