From 89b81d8a020a3c1f0a2a1efdd3c9d9b5a8916486 Mon Sep 17 00:00:00 2001 From: Paul Chaignon Date: Wed, 6 Sep 2023 15:33:10 +0200 Subject: sys/linux: cover BPF iterators support in BPF_LINK_CREATE Commit [1] upstream extended the bpf(2) BPF_LINK_CREATE command with optional fields for BPF iterators. The extra field is a pointer to a bpf_iter_link_info struct and its size. Commits [2, 3] upstream latter extended the bpf_iter_link_info struct to cover cgroup and task iterators. This commit extends the syzkaller description of BPF_LINK_CREATE to cover the above. 1 - https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5e7b30205cef80f6b 2 - https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d4ccaf58a8472123a 3 - https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f0d74c4da1f060d2a Signed-off-by: Paul Chaignon --- sys/linux/bpf.txt | 30 ++++++++++++++++++++++++++++++ sys/linux/bpf.txt.const | 4 ++++ 2 files changed, 34 insertions(+) (limited to 'sys/linux') diff --git a/sys/linux/bpf.txt b/sys/linux/bpf.txt index d6ad7a0b2..b278900e6 100644 --- a/sys/linux/bpf.txt +++ b/sys/linux/bpf.txt @@ -171,11 +171,40 @@ bpf_map_batch_arg { flags const[0, int64] } +bpf_iter_link_cgroup { + order flags[bpf_cgroup_iter_order, int32] + cgroup_fd fd_cgroup + cgroup_id int64 +} + +bpf_iter_link_task { + tid pid + pid pid + pid_fd fd_pidfd +} + +bpf_iter_link_info [ + map_fd fd_bpf_map + cgroup bpf_iter_link_cgroup + task bpf_iter_link_task +] + +link_create_iter { + iter_info ptr[in, bpf_iter_link_info] + iter_info_len bytesize[iter_info, int32] +} + +link_create_arg_extra [ + target_btf_id bpf_btf_id + iter link_create_iter +] + type bpf_link_create_arg_t[PROG_FD, TARGET_FD, ATTACH_TYPE, FLAGS] { prog_fd PROG_FD target_fd TARGET_FD attach_type ATTACH_TYPE flags FLAGS + extra optional[link_create_arg_extra] } type bpf_link_create_arg bpf_link_create_arg_t[fd_bpf_prog, fd_cgroup, flags[bpf_attach_types_link_create, int32], const[0, int32]] @@ -967,3 +996,4 @@ bpf_open_flags = BPF_F_RDONLY, BPF_F_WRONLY bpf_stat_types = BPF_STATS_RUN_TIME bpf_core_relo_kind = BPF_CORE_FIELD_BYTE_OFFSET, BPF_CORE_FIELD_BYTE_SIZE, BPF_CORE_FIELD_EXISTS, BPF_CORE_FIELD_SIGNED, BPF_CORE_FIELD_LSHIFT_U64, BPF_CORE_FIELD_RSHIFT_U64, BPF_CORE_TYPE_ID_LOCAL, BPF_CORE_TYPE_ID_TARGET, BPF_CORE_TYPE_EXISTS, BPF_CORE_TYPE_SIZE, BPF_CORE_ENUMVAL_EXISTS, BPF_CORE_ENUMVAL_VALUE, BPF_CORE_TYPE_MATCHES bpf_obj_get_flags = BPF_F_PATH_FD, BPF_F_RDONLY, BPF_F_WRONLY +bpf_cgroup_iter_order = BPF_CGROUP_ITER_SELF_ONLY, BPF_CGROUP_ITER_DESCENDANTS_PRE, BPF_CGROUP_ITER_DESCENDANTS_POST, BPF_CGROUP_ITER_ANCESTORS_UP diff --git a/sys/linux/bpf.txt.const b/sys/linux/bpf.txt.const index ce8296ea4..ced4f2134 100644 --- a/sys/linux/bpf.txt.const +++ b/sys/linux/bpf.txt.const @@ -28,6 +28,10 @@ BPF_CGROUP_INET_EGRESS = 1 BPF_CGROUP_INET_INGRESS = 0 BPF_CGROUP_INET_SOCK_CREATE = 2 BPF_CGROUP_INET_SOCK_RELEASE = 34 +BPF_CGROUP_ITER_ANCESTORS_UP = 4 +BPF_CGROUP_ITER_DESCENDANTS_POST = 3 +BPF_CGROUP_ITER_DESCENDANTS_PRE = 2 +BPF_CGROUP_ITER_SELF_ONLY = 1 BPF_CGROUP_SETSOCKOPT = 22 BPF_CGROUP_SOCK_OPS = 3 BPF_CGROUP_SYSCTL = 18 -- cgit mrf-deployment