aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorPaul Chaignon <paul.chaignon@gmail.com>2023-09-06 15:33:10 +0200
committerAleksandr Nogikh <nogikh@google.com>2023-09-13 07:31:19 +0000
commit89b81d8a020a3c1f0a2a1efdd3c9d9b5a8916486 (patch)
treea70f1d6de3b51095255d197be61388d07441a499 /sys
parent59da83662ae7076f1369c8a5b9dd1245223039df (diff)
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 <paul.chaignon@gmail.com>
Diffstat (limited to 'sys')
-rw-r--r--sys/linux/bpf.txt30
-rw-r--r--sys/linux/bpf.txt.const4
2 files changed, 34 insertions, 0 deletions
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