From: Chuyi Zhou Date: Wed, 18 Oct 2023 06:17:45 +0000 (+0800) Subject: selftests/bpf: rename bpf_iter_task.c to bpf_iter_tasks.c X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=ddab78cbb52f81f7f7598482602342955b2ff8b8;p=linux.git selftests/bpf: rename bpf_iter_task.c to bpf_iter_tasks.c The newly-added struct bpf_iter_task has a name collision with a selftest for the seq_file task iter's bpf skel, so the selftests/bpf/progs file is renamed in order to avoid the collision. Signed-off-by: Chuyi Zhou Acked-by: Andrii Nakryiko Link: https://lore.kernel.org/r/20231018061746.111364-8-zhouchuyi@bytedance.com Signed-off-by: Alexei Starovoitov --- diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_iter.c b/tools/testing/selftests/bpf/prog_tests/bpf_iter.c index 41aba139b20b8..e3498f607b49d 100644 --- a/tools/testing/selftests/bpf/prog_tests/bpf_iter.c +++ b/tools/testing/selftests/bpf/prog_tests/bpf_iter.c @@ -7,7 +7,7 @@ #include "bpf_iter_ipv6_route.skel.h" #include "bpf_iter_netlink.skel.h" #include "bpf_iter_bpf_map.skel.h" -#include "bpf_iter_task.skel.h" +#include "bpf_iter_tasks.skel.h" #include "bpf_iter_task_stack.skel.h" #include "bpf_iter_task_file.skel.h" #include "bpf_iter_task_vmas.skel.h" @@ -215,12 +215,12 @@ static void *do_nothing_wait(void *arg) static void test_task_common_nocheck(struct bpf_iter_attach_opts *opts, int *num_unknown, int *num_known) { - struct bpf_iter_task *skel; + struct bpf_iter_tasks *skel; pthread_t thread_id; void *ret; - skel = bpf_iter_task__open_and_load(); - if (!ASSERT_OK_PTR(skel, "bpf_iter_task__open_and_load")) + skel = bpf_iter_tasks__open_and_load(); + if (!ASSERT_OK_PTR(skel, "bpf_iter_tasks__open_and_load")) return; ASSERT_OK(pthread_mutex_lock(&do_nothing_mutex), "pthread_mutex_lock"); @@ -239,7 +239,7 @@ static void test_task_common_nocheck(struct bpf_iter_attach_opts *opts, ASSERT_FALSE(pthread_join(thread_id, &ret) || ret != NULL, "pthread_join"); - bpf_iter_task__destroy(skel); + bpf_iter_tasks__destroy(skel); } static void test_task_common(struct bpf_iter_attach_opts *opts, int num_unknown, int num_known) @@ -307,10 +307,10 @@ static void test_task_pidfd(void) static void test_task_sleepable(void) { - struct bpf_iter_task *skel; + struct bpf_iter_tasks *skel; - skel = bpf_iter_task__open_and_load(); - if (!ASSERT_OK_PTR(skel, "bpf_iter_task__open_and_load")) + skel = bpf_iter_tasks__open_and_load(); + if (!ASSERT_OK_PTR(skel, "bpf_iter_tasks__open_and_load")) return; do_dummy_read(skel->progs.dump_task_sleepable); @@ -320,7 +320,7 @@ static void test_task_sleepable(void) ASSERT_GT(skel->bss->num_success_copy_from_user_task, 0, "num_success_copy_from_user_task"); - bpf_iter_task__destroy(skel); + bpf_iter_tasks__destroy(skel); } static void test_task_stack(void) diff --git a/tools/testing/selftests/bpf/progs/bpf_iter_task.c b/tools/testing/selftests/bpf/progs/bpf_iter_task.c deleted file mode 100644 index 96131b9a1caae..0000000000000 --- a/tools/testing/selftests/bpf/progs/bpf_iter_task.c +++ /dev/null @@ -1,88 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* Copyright (c) 2020 Facebook */ -#include "bpf_iter.h" -#include -#include - -char _license[] SEC("license") = "GPL"; - -uint32_t tid = 0; -int num_unknown_tid = 0; -int num_known_tid = 0; - -SEC("iter/task") -int dump_task(struct bpf_iter__task *ctx) -{ - struct seq_file *seq = ctx->meta->seq; - struct task_struct *task = ctx->task; - static char info[] = " === END ==="; - - if (task == (void *)0) { - BPF_SEQ_PRINTF(seq, "%s\n", info); - return 0; - } - - if (task->pid != tid) - num_unknown_tid++; - else - num_known_tid++; - - if (ctx->meta->seq_num == 0) - BPF_SEQ_PRINTF(seq, " tgid gid\n"); - - BPF_SEQ_PRINTF(seq, "%8d %8d\n", task->tgid, task->pid); - return 0; -} - -int num_expected_failure_copy_from_user_task = 0; -int num_success_copy_from_user_task = 0; - -SEC("iter.s/task") -int dump_task_sleepable(struct bpf_iter__task *ctx) -{ - struct seq_file *seq = ctx->meta->seq; - struct task_struct *task = ctx->task; - static const char info[] = " === END ==="; - struct pt_regs *regs; - void *ptr; - uint32_t user_data = 0; - int ret; - - if (task == (void *)0) { - BPF_SEQ_PRINTF(seq, "%s\n", info); - return 0; - } - - /* Read an invalid pointer and ensure we get an error */ - ptr = NULL; - ret = bpf_copy_from_user_task(&user_data, sizeof(uint32_t), ptr, task, 0); - if (ret) { - ++num_expected_failure_copy_from_user_task; - } else { - BPF_SEQ_PRINTF(seq, "%s\n", info); - return 0; - } - - /* Try to read the contents of the task's instruction pointer from the - * remote task's address space. - */ - regs = (struct pt_regs *)bpf_task_pt_regs(task); - if (regs == (void *)0) { - BPF_SEQ_PRINTF(seq, "%s\n", info); - return 0; - } - ptr = (void *)PT_REGS_IP(regs); - - ret = bpf_copy_from_user_task(&user_data, sizeof(uint32_t), ptr, task, 0); - if (ret) { - BPF_SEQ_PRINTF(seq, "%s\n", info); - return 0; - } - ++num_success_copy_from_user_task; - - if (ctx->meta->seq_num == 0) - BPF_SEQ_PRINTF(seq, " tgid gid data\n"); - - BPF_SEQ_PRINTF(seq, "%8d %8d %8d\n", task->tgid, task->pid, user_data); - return 0; -} diff --git a/tools/testing/selftests/bpf/progs/bpf_iter_tasks.c b/tools/testing/selftests/bpf/progs/bpf_iter_tasks.c new file mode 100644 index 0000000000000..96131b9a1caae --- /dev/null +++ b/tools/testing/selftests/bpf/progs/bpf_iter_tasks.c @@ -0,0 +1,88 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2020 Facebook */ +#include "bpf_iter.h" +#include +#include + +char _license[] SEC("license") = "GPL"; + +uint32_t tid = 0; +int num_unknown_tid = 0; +int num_known_tid = 0; + +SEC("iter/task") +int dump_task(struct bpf_iter__task *ctx) +{ + struct seq_file *seq = ctx->meta->seq; + struct task_struct *task = ctx->task; + static char info[] = " === END ==="; + + if (task == (void *)0) { + BPF_SEQ_PRINTF(seq, "%s\n", info); + return 0; + } + + if (task->pid != tid) + num_unknown_tid++; + else + num_known_tid++; + + if (ctx->meta->seq_num == 0) + BPF_SEQ_PRINTF(seq, " tgid gid\n"); + + BPF_SEQ_PRINTF(seq, "%8d %8d\n", task->tgid, task->pid); + return 0; +} + +int num_expected_failure_copy_from_user_task = 0; +int num_success_copy_from_user_task = 0; + +SEC("iter.s/task") +int dump_task_sleepable(struct bpf_iter__task *ctx) +{ + struct seq_file *seq = ctx->meta->seq; + struct task_struct *task = ctx->task; + static const char info[] = " === END ==="; + struct pt_regs *regs; + void *ptr; + uint32_t user_data = 0; + int ret; + + if (task == (void *)0) { + BPF_SEQ_PRINTF(seq, "%s\n", info); + return 0; + } + + /* Read an invalid pointer and ensure we get an error */ + ptr = NULL; + ret = bpf_copy_from_user_task(&user_data, sizeof(uint32_t), ptr, task, 0); + if (ret) { + ++num_expected_failure_copy_from_user_task; + } else { + BPF_SEQ_PRINTF(seq, "%s\n", info); + return 0; + } + + /* Try to read the contents of the task's instruction pointer from the + * remote task's address space. + */ + regs = (struct pt_regs *)bpf_task_pt_regs(task); + if (regs == (void *)0) { + BPF_SEQ_PRINTF(seq, "%s\n", info); + return 0; + } + ptr = (void *)PT_REGS_IP(regs); + + ret = bpf_copy_from_user_task(&user_data, sizeof(uint32_t), ptr, task, 0); + if (ret) { + BPF_SEQ_PRINTF(seq, "%s\n", info); + return 0; + } + ++num_success_copy_from_user_task; + + if (ctx->meta->seq_num == 0) + BPF_SEQ_PRINTF(seq, " tgid gid data\n"); + + BPF_SEQ_PRINTF(seq, "%8d %8d %8d\n", task->tgid, task->pid, user_data); + return 0; +}