summaryrefslogtreecommitdiff
path: root/tools/testing/selftests/bpf/progs/bpf_iter_task.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/testing/selftests/bpf/progs/bpf_iter_task.c')
-rw-r--r--tools/testing/selftests/bpf/progs/bpf_iter_task.c88
1 files changed, 0 insertions, 88 deletions
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 96131b9a1caa..000000000000
--- 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 <bpf/bpf_helpers.h>
-#include <bpf/bpf_tracing.h>
-
-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;
-}