diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2016-11-05 13:06:52 -0600 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2016-11-11 15:03:30 -0800 |
| commit | edc6728a2a28189a9a8061bf442468ab3f35181e (patch) | |
| tree | da79ab6523d7adb051745cc5fede135fe3452b00 /sys | |
| parent | 89abacc228e60afe1df0b01d36dc7fe886ca7bcc (diff) | |
sys: improve bpf descriptions
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/bpf.txt | 32 | ||||
| -rw-r--r-- | sys/bpf_amd64.const | 9 | ||||
| -rw-r--r-- | sys/bpf_arm64.const | 9 | ||||
| -rw-r--r-- | sys/bpf_ppc64le.const | 9 | ||||
| -rw-r--r-- | sys/sys.txt | 2 |
5 files changed, 54 insertions, 7 deletions
diff --git a/sys/bpf.txt b/sys/bpf.txt index e7338cc53..40dce2b9c 100644 --- a/sys/bpf.txt +++ b/sys/bpf.txt @@ -1,9 +1,13 @@ # Copyright 2015 syzkaller project authors. All rights reserved. # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. +# Note these sysctls have radical effect on code paths inside of kernel: +# net.core.bpf_jit_enable = { 0, 1, 2 } +# net.core.bpf_jit_harden = { 0, 1, 2 } + include <linux/bpf.h> -resource fd_bpf_map[fd] +resource fd_bpf_map[fd]: BPF_PSEUDO_MAP_FD resource fd_bpf_prog[fd] bpf$MAP_CREATE(cmd const[BPF_MAP_CREATE], arg ptr[in, bpf_map_create_arg], size len[arg]) fd_bpf_map @@ -22,6 +26,7 @@ bpf_map_create_arg { ksize int32 vsize int32 max int32 + flags flags[map_flags, int32] } bpf_map_lookup_arg { @@ -59,14 +64,28 @@ bpf_prog { kver int32 } -bpf_insn { +bpf_insn [ + generic bpf_insn_generic + map bpf_insn_map +] + +#TODO: consider providing specialized structs for all opcodes (or opcode groups) +# For example, for lots of opcodes some fields must be 0, otherwise verifier will bark +bpf_insn_generic { code int8 - dst int8 - src int8 + regs int8 off int16 imm int32 } +bpf_insn_map { + code int8 + regs int8 + off int16 + imm fd_bpf_map +} + +# Note: these filenames must be on bpf filesystem bpf_obj_pin_map { path filename fd fd_bpf_map @@ -82,6 +101,7 @@ bpf_obj_get { fd const[0, int32] } -bpf_map_type = BPF_MAP_TYPE_HASH, BPF_MAP_TYPE_ARRAY, BPF_MAP_TYPE_PROG_ARRAY, BPF_MAP_TYPE_PERF_EVENT_ARRAY +bpf_map_type = BPF_MAP_TYPE_HASH, BPF_MAP_TYPE_ARRAY, BPF_MAP_TYPE_PROG_ARRAY, BPF_MAP_TYPE_PERF_EVENT_ARRAY, BPF_MAP_TYPE_STACK_TRACE, BPF_MAP_TYPE_CGROUP_ARRAY, BPF_MAP_TYPE_PERCPU_HASH, BPF_MAP_TYPE_PERCPU_ARRAY bpf_map_flags = BPF_ANY, BPF_NOEXIST, BPF_EXIST -bpf_prog_type = BPF_PROG_TYPE_SOCKET_FILTER, BPF_PROG_TYPE_KPROBE, BPF_PROG_TYPE_SCHED_CLS, BPF_PROG_TYPE_SCHED_ACT +bpf_prog_type = BPF_PROG_TYPE_SOCKET_FILTER, BPF_PROG_TYPE_KPROBE, BPF_PROG_TYPE_SCHED_CLS, BPF_PROG_TYPE_SCHED_ACT, BPF_PROG_TYPE_TRACEPOINT, BPF_PROG_TYPE_XDP, BPF_PROG_TYPE_PERF_EVENT +map_flags = BPF_F_NO_PREALLOC diff --git a/sys/bpf_amd64.const b/sys/bpf_amd64.const index 7036cfc52..5a701fcf5 100644 --- a/sys/bpf_amd64.const +++ b/sys/bpf_amd64.const @@ -1,21 +1,30 @@ # AUTOGENERATED FILE BPF_ANY = 0 BPF_EXIST = 2 +BPF_F_NO_PREALLOC = 1 BPF_MAP_CREATE = 0 BPF_MAP_DELETE_ELEM = 3 BPF_MAP_GET_NEXT_KEY = 4 BPF_MAP_LOOKUP_ELEM = 1 BPF_MAP_TYPE_ARRAY = 2 +BPF_MAP_TYPE_CGROUP_ARRAY = 8 BPF_MAP_TYPE_HASH = 1 +BPF_MAP_TYPE_PERCPU_ARRAY = 6 +BPF_MAP_TYPE_PERCPU_HASH = 5 BPF_MAP_TYPE_PERF_EVENT_ARRAY = 4 BPF_MAP_TYPE_PROG_ARRAY = 3 +BPF_MAP_TYPE_STACK_TRACE = 7 BPF_MAP_UPDATE_ELEM = 2 BPF_NOEXIST = 1 BPF_OBJ_GET = 7 BPF_OBJ_PIN = 6 BPF_PROG_LOAD = 5 BPF_PROG_TYPE_KPROBE = 2 +BPF_PROG_TYPE_PERF_EVENT = 7 BPF_PROG_TYPE_SCHED_ACT = 4 BPF_PROG_TYPE_SCHED_CLS = 3 BPF_PROG_TYPE_SOCKET_FILTER = 1 +BPF_PROG_TYPE_TRACEPOINT = 5 +BPF_PROG_TYPE_XDP = 6 +BPF_PSEUDO_MAP_FD = 1 __NR_bpf = 321 diff --git a/sys/bpf_arm64.const b/sys/bpf_arm64.const index 8765a6759..37c42c970 100644 --- a/sys/bpf_arm64.const +++ b/sys/bpf_arm64.const @@ -1,21 +1,30 @@ # AUTOGENERATED FILE BPF_ANY = 0 BPF_EXIST = 2 +BPF_F_NO_PREALLOC = 1 BPF_MAP_CREATE = 0 BPF_MAP_DELETE_ELEM = 3 BPF_MAP_GET_NEXT_KEY = 4 BPF_MAP_LOOKUP_ELEM = 1 BPF_MAP_TYPE_ARRAY = 2 +BPF_MAP_TYPE_CGROUP_ARRAY = 8 BPF_MAP_TYPE_HASH = 1 +BPF_MAP_TYPE_PERCPU_ARRAY = 6 +BPF_MAP_TYPE_PERCPU_HASH = 5 BPF_MAP_TYPE_PERF_EVENT_ARRAY = 4 BPF_MAP_TYPE_PROG_ARRAY = 3 +BPF_MAP_TYPE_STACK_TRACE = 7 BPF_MAP_UPDATE_ELEM = 2 BPF_NOEXIST = 1 BPF_OBJ_GET = 7 BPF_OBJ_PIN = 6 BPF_PROG_LOAD = 5 BPF_PROG_TYPE_KPROBE = 2 +BPF_PROG_TYPE_PERF_EVENT = 7 BPF_PROG_TYPE_SCHED_ACT = 4 BPF_PROG_TYPE_SCHED_CLS = 3 BPF_PROG_TYPE_SOCKET_FILTER = 1 +BPF_PROG_TYPE_TRACEPOINT = 5 +BPF_PROG_TYPE_XDP = 6 +BPF_PSEUDO_MAP_FD = 1 __NR_bpf = 280 diff --git a/sys/bpf_ppc64le.const b/sys/bpf_ppc64le.const index b2f8d99d3..efeb7dce1 100644 --- a/sys/bpf_ppc64le.const +++ b/sys/bpf_ppc64le.const @@ -1,21 +1,30 @@ # AUTOGENERATED FILE BPF_ANY = 0 BPF_EXIST = 2 +BPF_F_NO_PREALLOC = 1 BPF_MAP_CREATE = 0 BPF_MAP_DELETE_ELEM = 3 BPF_MAP_GET_NEXT_KEY = 4 BPF_MAP_LOOKUP_ELEM = 1 BPF_MAP_TYPE_ARRAY = 2 +BPF_MAP_TYPE_CGROUP_ARRAY = 8 BPF_MAP_TYPE_HASH = 1 +BPF_MAP_TYPE_PERCPU_ARRAY = 6 +BPF_MAP_TYPE_PERCPU_HASH = 5 BPF_MAP_TYPE_PERF_EVENT_ARRAY = 4 BPF_MAP_TYPE_PROG_ARRAY = 3 +BPF_MAP_TYPE_STACK_TRACE = 7 BPF_MAP_UPDATE_ELEM = 2 BPF_NOEXIST = 1 BPF_OBJ_GET = 7 BPF_OBJ_PIN = 6 BPF_PROG_LOAD = 5 BPF_PROG_TYPE_KPROBE = 2 +BPF_PROG_TYPE_PERF_EVENT = 7 BPF_PROG_TYPE_SCHED_ACT = 4 BPF_PROG_TYPE_SCHED_CLS = 3 BPF_PROG_TYPE_SOCKET_FILTER = 1 +BPF_PROG_TYPE_TRACEPOINT = 5 +BPF_PROG_TYPE_XDP = 6 +BPF_PSEUDO_MAP_FD = 1 __NR_bpf = 361 diff --git a/sys/sys.txt b/sys/sys.txt index c6da9a800..eb8cb9f16 100644 --- a/sys/sys.txt +++ b/sys/sys.txt @@ -350,7 +350,7 @@ mount$fs(src ptr[in, string[filesystem]], dst filename, type ptr[in, string[file umount2(path filename, flags flags[umount_flags]) pivot_root(new_root filename, put_old filename) -filesystem = "sysfs", "rootfs", "ramfs", "tmpfs", "devtmpfs", "debugfs", "securityfs", "sockfs", "pipefs", "anon_inodefs", "devpts", "ext3", "ext2", "ext4", "hugetlbfs", "vfat", "ecryptfs", "kdbusfs", "fuseblk", "fuse", "rpc_pipefs", "nfs", "nfs4", "nfsd", "binfmt_misc", "autofs", "xfs", "jfs", "msdos", "ntfs", "minix", "hfs", "hfsplus", "qnx4", "ufs", "btrfs", "configfs", "ncpfs", "qnx6", "exofs", "befs", "vxfs", "gfs2", "gfs2meta", "fusectl", "bfs", "nsfs", "efs", "cifs", "efivarfs", "affs", "tracefs", "bdev", "ocfs2", "ocfs2_dlmfs", "hpfs", "proc", "afs", "reiserfs", "jffs2", "romfs", "aio", "sysv", "v7", "udf", "ceph", "pstore", "adfs", "9p", "hostfs", "squashfs", "cramfs", "iso9660", "coda", "nilfs2", "logfs", "overlay", "f2fs", "omfs", "ubifs", "openpromfs" +filesystem = "sysfs", "rootfs", "ramfs", "tmpfs", "devtmpfs", "debugfs", "securityfs", "sockfs", "pipefs", "anon_inodefs", "devpts", "ext3", "ext2", "ext4", "hugetlbfs", "vfat", "ecryptfs", "kdbusfs", "fuseblk", "fuse", "rpc_pipefs", "nfs", "nfs4", "nfsd", "binfmt_misc", "autofs", "xfs", "jfs", "msdos", "ntfs", "minix", "hfs", "hfsplus", "qnx4", "ufs", "btrfs", "configfs", "ncpfs", "qnx6", "exofs", "befs", "vxfs", "gfs2", "gfs2meta", "fusectl", "bfs", "nsfs", "efs", "cifs", "efivarfs", "affs", "tracefs", "bdev", "ocfs2", "ocfs2_dlmfs", "hpfs", "proc", "afs", "reiserfs", "jffs2", "romfs", "aio", "sysv", "v7", "udf", "ceph", "pstore", "adfs", "9p", "hostfs", "squashfs", "cramfs", "iso9660", "coda", "nilfs2", "logfs", "overlay", "f2fs", "omfs", "ubifs", "openpromfs", "bpf" sysfs$1(option const[1], fsname ptr[in, string]) sysfs$2(option const[2], fsindex intptr, fsname buffer[out]) |
