selftests/bpf: use typedef'ed arrays as map values
authorAndrii Nakryiko <andriin@fb.com>
Fri, 12 Jul 2019 17:25:57 +0000 (10:25 -0700)
committerDaniel Borkmann <daniel@iogearbox.net>
Mon, 15 Jul 2019 21:02:17 +0000 (23:02 +0200)
Convert few tests that couldn't use typedef'ed arrays due to kernel bug.

Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
tools/testing/selftests/bpf/progs/test_get_stack_rawtp.c
tools/testing/selftests/bpf/progs/test_stacktrace_build_id.c
tools/testing/selftests/bpf/progs/test_stacktrace_map.c

index d06b47a..33254b7 100644 (file)
@@ -47,11 +47,12 @@ struct {
  * issue and avoid complicated C programming massaging.
  * This is an acceptable workaround since there is one entry here.
  */
+typedef __u64 raw_stack_trace_t[2 * MAX_STACK_RAWTP];
 struct {
        __uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
        __uint(max_entries, 1);
        __type(key, __u32);
-       __u64 (*value)[2 * MAX_STACK_RAWTP];
+       __type(value, raw_stack_trace_t);
 } rawdata_map SEC(".maps");
 
 SEC("tracepoint/raw_syscalls/sys_enter")
index bbfc833..f5638e2 100644 (file)
@@ -36,8 +36,7 @@ struct {
        __uint(type, BPF_MAP_TYPE_ARRAY);
        __uint(max_entries, 128);
        __type(key, __u32);
-       /* there seems to be a bug in kernel not handling typedef properly */
-       struct bpf_stack_build_id (*value)[PERF_MAX_STACK_DEPTH];
+       __type(value, stack_trace_t);
 } stack_amap SEC(".maps");
 
 /* taken from /sys/kernel/debug/tracing/events/random/urandom_read/format */
index 803c15d..fa0be3e 100644 (file)
@@ -35,7 +35,7 @@ struct {
        __uint(type, BPF_MAP_TYPE_ARRAY);
        __uint(max_entries, 16384);
        __type(key, __u32);
-       __u64 (*value)[PERF_MAX_STACK_DEPTH];
+       __type(value, stack_trace_t);
 } stack_amap SEC(".maps");
 
 /* taken from /sys/kernel/debug/tracing/events/sched/sched_switch/format */