diff options
Diffstat (limited to 'tools/testing/selftests/bpf/progs/test_global_func12.c')
-rw-r--r-- | tools/testing/selftests/bpf/progs/test_global_func12.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/progs/test_global_func12.c b/tools/testing/selftests/bpf/progs/test_global_func12.c new file mode 100644 index 000000000000..6e03d42519a6 --- /dev/null +++ b/tools/testing/selftests/bpf/progs/test_global_func12.c @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: GPL-2.0-only +#include <stddef.h> +#include <linux/bpf.h> +#include <bpf/bpf_helpers.h> +#include "bpf_misc.h" + +struct S { + int x; +}; + +__noinline int foo(const struct S *s) +{ + return bpf_get_prandom_u32() < s->x; +} + +SEC("cgroup_skb/ingress") +__failure __msg("invalid mem access 'mem_or_null'") +int global_func12(struct __sk_buff *skb) +{ + const struct S s = {.x = skb->len }; + + foo(&s); + + return 1; +} |