aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2016-11-05 13:06:52 -0600
committerDmitry Vyukov <dvyukov@google.com>2016-11-11 15:03:30 -0800
commitedc6728a2a28189a9a8061bf442468ab3f35181e (patch)
treeda79ab6523d7adb051745cc5fede135fe3452b00 /sys
parent89abacc228e60afe1df0b01d36dc7fe886ca7bcc (diff)
sys: improve bpf descriptions
Diffstat (limited to 'sys')
-rw-r--r--sys/bpf.txt32
-rw-r--r--sys/bpf_amd64.const9
-rw-r--r--sys/bpf_arm64.const9
-rw-r--r--sys/bpf_ppc64le.const9
-rw-r--r--sys/sys.txt2
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])