From 2f1090dacdba3f3d405f43c136ae999f635e3310 Mon Sep 17 00:00:00 2001 From: Greg Steuck Date: Mon, 29 Oct 2018 10:59:16 -0700 Subject: sys/openbsd: added minherit, extended/simplified mmap * sys/openbsd: added minherit, extended/simplified mmap. Added a script from anton_at_openbsd.org for regenerating syscalls. Generated by ksh ./sys/openbsd/extract-openbsd.sh * Undo whitespace change not passing on CI * No need for magic script. --- executor/defs.h | 2 +- executor/syscalls.h | 1 + sys/openbsd/gen/amd64.go | 21 +++++++++++++++++---- sys/openbsd/mm.txt | 6 ++++-- sys/openbsd/mm_amd64.const | 10 +++++++++- 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/executor/defs.h b/executor/defs.h index e41bc5821..1a6851f4f 100644 --- a/executor/defs.h +++ b/executor/defs.h @@ -130,7 +130,7 @@ #if GOARCH_amd64 #define GOARCH "amd64" -#define SYZ_REVISION "b7a0cb1d6df43d07bd4ab11d2c4b1a2e1c046ac1" +#define SYZ_REVISION "df30b58093a18d87ed6803bfe65ec9af86f721a3" #define SYZ_EXECUTOR_USES_FORK_SERVER 1 #define SYZ_EXECUTOR_USES_SHMEM 1 #define SYZ_PAGE_SIZE 4096 diff --git a/executor/syscalls.h b/executor/syscalls.h index 0613b7ef4..c88932fc6 100644 --- a/executor/syscalls.h +++ b/executor/syscalls.h @@ -12755,6 +12755,7 @@ const call_t syscalls[] = { {"lstat", 40}, {"madvise", 75}, {"mincore", 78}, + {"minherit", 250}, {"mkdir", 136}, {"mkdirat", 318}, {"mknod", 14}, diff --git a/sys/openbsd/gen/amd64.go b/sys/openbsd/gen/amd64.go index 4e7acb920..317e8f8e5 100644 --- a/sys/openbsd/gen/amd64.go +++ b/sys/openbsd/gen/amd64.go @@ -913,13 +913,18 @@ var syscalls_amd64 = []*Syscall{ {NR: 75, Name: "madvise", CallName: "madvise", Args: []Type{ &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "addr", TypeSize: 8}}, &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 8}}, Buf: "addr"}, - &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "madvise_flags", FldName: "advice", TypeSize: 8}}, Vals: []uint64{0, 1, 2, 3, 4, 6}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "madvise_flags", FldName: "advice", TypeSize: 8}}, Vals: []uint64{0, 1, 2, 3, 4, 5, 6}}, }}, {NR: 78, Name: "mincore", CallName: "mincore", Args: []Type{ &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "addr", TypeSize: 8}}, &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "size", TypeSize: 8}}, Buf: "addr"}, &PtrType{TypeCommon: TypeCommon{TypeName: "buffer", FldName: "vec", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{ArgDir: 1, IsVarlen: true}}}, }}, + {NR: 250, Name: "minherit", CallName: "minherit", Args: []Type{ + &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "addr", TypeSize: 8}}, + &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 8}}, Buf: "addr"}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "inherit_flags", FldName: "inherit", TypeSize: 8}}, Vals: []uint64{2, 1, 0, 3}}, + }}, {NR: 136, Name: "mkdir", CallName: "mkdir", Args: []Type{ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "path", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "filename", IsVarlen: true}, Kind: 3}}, &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "open_mode", FldName: "mode", TypeSize: 8}}, Vals: []uint64{256, 128, 64, 32, 16, 8, 4, 2, 1}, BitMask: true}, @@ -956,7 +961,7 @@ var syscalls_amd64 = []*Syscall{ &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "addr", TypeSize: 8}}, &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 8}}, Buf: "addr"}, &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "mmap_prot", FldName: "prot", TypeSize: 8}}, Vals: []uint64{4, 1, 2, 0}, BitMask: true}, - &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "mmap_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{4096, 4096, 16, 2, 1}}, + &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "mmap_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{1, 2, 16, 4096, 16384, 8192, 2048}, BitMask: true}, &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "fd", TypeSize: 4}}, &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "pad", TypeSize: 8}}}, &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "fileoff", FldName: "offset", TypeSize: 8}}, Kind: 1}, @@ -1581,12 +1586,17 @@ var consts_amd64 = []ConstValue{ {Name: "MADV_NORMAL"}, {Name: "MADV_RANDOM", Value: 1}, {Name: "MADV_SEQUENTIAL", Value: 2}, + {Name: "MADV_SPACEAVAIL", Value: 5}, {Name: "MADV_WILLNEED", Value: 3}, - {Name: "MAP_ANON", Value: 4096}, {Name: "MAP_ANONYMOUS", Value: 4096}, {Name: "MAP_FIXED", Value: 16}, + {Name: "MAP_INHERIT_COPY", Value: 1}, + {Name: "MAP_INHERIT_NONE", Value: 2}, + {Name: "MAP_INHERIT_SHARE"}, + {Name: "MAP_INHERIT_ZERO", Value: 3}, {Name: "MAP_PRIVATE", Value: 2}, {Name: "MAP_SHARED", Value: 1}, + {Name: "MAP_STACK", Value: 16384}, {Name: "MCL_CURRENT", Value: 1}, {Name: "MCL_FUTURE", Value: 2}, {Name: "MIFF_REGISTER", Value: 1}, @@ -1755,6 +1765,7 @@ var consts_amd64 = []ConstValue{ {Name: "SYS_lstat", Value: 40}, {Name: "SYS_madvise", Value: 75}, {Name: "SYS_mincore", Value: 78}, + {Name: "SYS_minherit", Value: 250}, {Name: "SYS_mkdir", Value: 136}, {Name: "SYS_mkdirat", Value: 318}, {Name: "SYS_mknod", Value: 14}, @@ -1878,6 +1889,8 @@ var consts_amd64 = []ConstValue{ {Name: "WCONTINUED", Value: 8}, {Name: "WNOHANG", Value: 1}, {Name: "WUNTRACED", Value: 2}, + {Name: "__MAP_NOFAULT", Value: 8192}, + {Name: "__MAP_NOREPLACE", Value: 2048}, } -const revision_amd64 = "b7a0cb1d6df43d07bd4ab11d2c4b1a2e1c046ac1" +const revision_amd64 = "df30b58093a18d87ed6803bfe65ec9af86f721a3" diff --git a/sys/openbsd/mm.txt b/sys/openbsd/mm.txt index b12f7a485..7a122655b 100644 --- a/sys/openbsd/mm.txt +++ b/sys/openbsd/mm.txt @@ -12,8 +12,10 @@ mlock(addr vma, size len[addr]) munlock(addr vma, size len[addr]) mlockall(flags flags[mlockall_flags]) munlockall() +minherit(addr vma, len len[addr], inherit flags[inherit_flags]) mmap_prot = PROT_EXEC, PROT_READ, PROT_WRITE, PROT_NONE -mmap_flags = MAP_ANON, MAP_ANONYMOUS, MAP_FIXED, MAP_PRIVATE, MAP_SHARED -madvise_flags = MADV_NORMAL, MADV_RANDOM, MADV_SEQUENTIAL, MADV_WILLNEED, MADV_DONTNEED, MADV_FREE +mmap_flags = MAP_SHARED, MAP_PRIVATE, MAP_FIXED, MAP_ANONYMOUS, MAP_STACK, __MAP_NOFAULT, __MAP_NOREPLACE +madvise_flags = MADV_NORMAL, MADV_RANDOM, MADV_SEQUENTIAL, MADV_WILLNEED, MADV_DONTNEED, MADV_SPACEAVAIL, MADV_FREE mlockall_flags = MCL_CURRENT, MCL_FUTURE +inherit_flags = MAP_INHERIT_NONE, MAP_INHERIT_COPY, MAP_INHERIT_SHARE, MAP_INHERIT_ZERO diff --git a/sys/openbsd/mm_amd64.const b/sys/openbsd/mm_amd64.const index e9a33c91a..25fbef1af 100644 --- a/sys/openbsd/mm_amd64.const +++ b/sys/openbsd/mm_amd64.const @@ -4,12 +4,17 @@ MADV_FREE = 6 MADV_NORMAL = 0 MADV_RANDOM = 1 MADV_SEQUENTIAL = 2 +MADV_SPACEAVAIL = 5 MADV_WILLNEED = 3 -MAP_ANON = 4096 MAP_ANONYMOUS = 4096 MAP_FIXED = 16 +MAP_INHERIT_COPY = 1 +MAP_INHERIT_NONE = 2 +MAP_INHERIT_SHARE = 0 +MAP_INHERIT_ZERO = 3 MAP_PRIVATE = 2 MAP_SHARED = 1 +MAP_STACK = 16384 MCL_CURRENT = 1 MCL_FUTURE = 2 PROT_EXEC = 4 @@ -17,6 +22,7 @@ PROT_NONE = 0 PROT_READ = 1 PROT_WRITE = 2 SYS_madvise = 75 +SYS_minherit = 250 SYS_mlock = 203 SYS_mlockall = 271 SYS_mmap = 197 @@ -24,3 +30,5 @@ SYS_mprotect = 74 SYS_munlock = 204 SYS_munlockall = 272 SYS_munmap = 73 +__MAP_NOFAULT = 8192 +__MAP_NOREPLACE = 2048 -- cgit mrf-deployment