diff options
| -rw-r--r-- | tools/testing/selftests/bpf/get_cgroup_id_kern.c | 14 | ||||
| -rw-r--r-- | tools/testing/selftests/bpf/get_cgroup_id_user.c | 12 |
2 files changed, 23 insertions, 3 deletions
diff --git a/tools/testing/selftests/bpf/get_cgroup_id_kern.c b/tools/testing/selftests/bpf/get_cgroup_id_kern.c index 2cf8cb23f209..014dba10b8a5 100644 --- a/tools/testing/selftests/bpf/get_cgroup_id_kern.c +++ b/tools/testing/selftests/bpf/get_cgroup_id_kern.c | |||
| @@ -11,12 +11,24 @@ struct bpf_map_def SEC("maps") cg_ids = { | |||
| 11 | .max_entries = 1, | 11 | .max_entries = 1, |
| 12 | }; | 12 | }; |
| 13 | 13 | ||
| 14 | struct bpf_map_def SEC("maps") pidmap = { | ||
| 15 | .type = BPF_MAP_TYPE_ARRAY, | ||
| 16 | .key_size = sizeof(__u32), | ||
| 17 | .value_size = sizeof(__u32), | ||
| 18 | .max_entries = 1, | ||
| 19 | }; | ||
| 20 | |||
| 14 | SEC("tracepoint/syscalls/sys_enter_nanosleep") | 21 | SEC("tracepoint/syscalls/sys_enter_nanosleep") |
| 15 | int trace(void *ctx) | 22 | int trace(void *ctx) |
| 16 | { | 23 | { |
| 17 | __u32 key = 0; | 24 | __u32 pid = bpf_get_current_pid_tgid(); |
| 25 | __u32 key = 0, *expected_pid; | ||
| 18 | __u64 *val; | 26 | __u64 *val; |
| 19 | 27 | ||
| 28 | expected_pid = bpf_map_lookup_elem(&pidmap, &key); | ||
| 29 | if (!expected_pid || *expected_pid != pid) | ||
| 30 | return 0; | ||
| 31 | |||
| 20 | val = bpf_map_lookup_elem(&cg_ids, &key); | 32 | val = bpf_map_lookup_elem(&cg_ids, &key); |
| 21 | if (val) | 33 | if (val) |
| 22 | *val = bpf_get_current_cgroup_id(); | 34 | *val = bpf_get_current_cgroup_id(); |
diff --git a/tools/testing/selftests/bpf/get_cgroup_id_user.c b/tools/testing/selftests/bpf/get_cgroup_id_user.c index ea19a42e5894..e8da7b39158d 100644 --- a/tools/testing/selftests/bpf/get_cgroup_id_user.c +++ b/tools/testing/selftests/bpf/get_cgroup_id_user.c | |||
| @@ -50,13 +50,13 @@ int main(int argc, char **argv) | |||
| 50 | const char *probe_name = "syscalls/sys_enter_nanosleep"; | 50 | const char *probe_name = "syscalls/sys_enter_nanosleep"; |
| 51 | const char *file = "get_cgroup_id_kern.o"; | 51 | const char *file = "get_cgroup_id_kern.o"; |
| 52 | int err, bytes, efd, prog_fd, pmu_fd; | 52 | int err, bytes, efd, prog_fd, pmu_fd; |
| 53 | int cgroup_fd, cgidmap_fd, pidmap_fd; | ||
| 53 | struct perf_event_attr attr = {}; | 54 | struct perf_event_attr attr = {}; |
| 54 | int cgroup_fd, cgidmap_fd; | ||
| 55 | struct bpf_object *obj; | 55 | struct bpf_object *obj; |
| 56 | __u64 kcgid = 0, ucgid; | 56 | __u64 kcgid = 0, ucgid; |
| 57 | __u32 key = 0, pid; | ||
| 57 | int exit_code = 1; | 58 | int exit_code = 1; |
| 58 | char buf[256]; | 59 | char buf[256]; |
| 59 | __u32 key = 0; | ||
| 60 | 60 | ||
| 61 | err = setup_cgroup_environment(); | 61 | err = setup_cgroup_environment(); |
| 62 | if (CHECK(err, "setup_cgroup_environment", "err %d errno %d\n", err, | 62 | if (CHECK(err, "setup_cgroup_environment", "err %d errno %d\n", err, |
| @@ -81,6 +81,14 @@ int main(int argc, char **argv) | |||
| 81 | cgidmap_fd, errno)) | 81 | cgidmap_fd, errno)) |
| 82 | goto close_prog; | 82 | goto close_prog; |
| 83 | 83 | ||
| 84 | pidmap_fd = bpf_find_map(__func__, obj, "pidmap"); | ||
| 85 | if (CHECK(pidmap_fd < 0, "bpf_find_map", "err %d errno %d\n", | ||
| 86 | pidmap_fd, errno)) | ||
| 87 | goto close_prog; | ||
| 88 | |||
| 89 | pid = getpid(); | ||
| 90 | bpf_map_update_elem(pidmap_fd, &key, &pid, 0); | ||
| 91 | |||
| 84 | snprintf(buf, sizeof(buf), | 92 | snprintf(buf, sizeof(buf), |
| 85 | "/sys/kernel/debug/tracing/events/%s/id", probe_name); | 93 | "/sys/kernel/debug/tracing/events/%s/id", probe_name); |
| 86 | efd = open(buf, O_RDONLY, 0); | 94 | efd = open(buf, O_RDONLY, 0); |
