| // SPDX-License-Identifier: GPL-2.0 |
| /* Copyright (c) 2022 Facebook */ |
| #include "vmlinux.h" |
| #include <bpf/bpf_helpers.h> |
| #include <bpf/bpf_tracing.h> |
| |
| struct bpf_testmod_btf_type_tag_1 { |
| int a; |
| }; |
| |
| struct bpf_testmod_btf_type_tag_2 { |
| struct bpf_testmod_btf_type_tag_1 *p; |
| }; |
| |
| int g; |
| |
| SEC("fentry/bpf_testmod_test_btf_type_tag_user_1") |
| int BPF_PROG(test_user1, struct bpf_testmod_btf_type_tag_1 *arg) |
| { |
| g = arg->a; |
| return 0; |
| } |
| |
| SEC("fentry/bpf_testmod_test_btf_type_tag_user_2") |
| int BPF_PROG(test_user2, struct bpf_testmod_btf_type_tag_2 *arg) |
| { |
| g = arg->p->a; |
| return 0; |
| } |
| |
| /* int __sys_getsockname(int fd, struct sockaddr __user *usockaddr, |
| * int __user *usockaddr_len); |
| */ |
| SEC("fentry/__sys_getsockname") |
| int BPF_PROG(test_sys_getsockname, int fd, struct sockaddr *usockaddr, |
| int *usockaddr_len) |
| { |
| g = usockaddr->sa_family; |
| return 0; |
| } |