diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2024-06-02 11:58:29 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2024-06-04 09:50:32 +0000 |
| commit | 06bf8101debe879447d0ef3a7a5b84cb11fa5acf (patch) | |
| tree | d36506158005ab053b33b46559d48ba5e54b4a9e /sys | |
| parent | 3f1713c975c911f9ca5d27d0292f7505b176c873 (diff) | |
executor: remove noshmem mode
All OSes we have now support shmem.
Support for Fuchia/Starnix/Windows wasn't implemented,
but generally they support shared memory.
Remove all of the complexity and code associated with noshmem mode.
If/when we revive these OSes, it's easier to properly
implement shmem mode for them.
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/syz-sysgen/sysgen.go | 9 | ||||
| -rw-r--r-- | sys/targets/targets.go | 51 | ||||
| -rw-r--r-- | sys/test/arch_32.txt | 2 | ||||
| -rw-r--r-- | sys/test/csource.txt.const | 2 | ||||
| -rw-r--r-- | sys/test/expressions.txt.const | 4 | ||||
| -rw-r--r-- | sys/test/test.txt.const | 4 | ||||
| -rw-r--r-- | sys/test/test/align0 | 4 | ||||
| -rw-r--r-- | sys/test/test/align0_be | 4 | ||||
| -rw-r--r-- | sys/test/test/bf | 4 | ||||
| -rw-r--r-- | sys/test/test/bf2 | 4 | ||||
| -rw-r--r-- | sys/test/test/bf2_be | 4 | ||||
| -rw-r--r-- | sys/test/test/bf_be | 4 |
12 files changed, 38 insertions, 58 deletions
diff --git a/sys/syz-sysgen/sysgen.go b/sys/syz-sysgen/sysgen.go index f170ad410..0022cea12 100644 --- a/sys/syz-sysgen/sysgen.go +++ b/sys/syz-sysgen/sysgen.go @@ -42,7 +42,6 @@ type Define struct { type ArchData struct { Revision string ForkServer int - Shmem int GOARCH string PageSize uint64 NumPages uint64 @@ -252,11 +251,11 @@ func generate(target *targets.Target, prg *compiler.Prog, consts map[string]uint fmt.Fprintf(out, "func init() {\n") fmt.Fprintf(out, "\tRegisterTarget(&Target{"+ "OS: %q, Arch: %q, Revision: revision_%v, PtrSize: %v, PageSize: %v, "+ - "NumPages: %v, DataOffset: %v, LittleEndian: %v, ExecutorUsesShmem: %v, "+ + "NumPages: %v, DataOffset: %v, LittleEndian: %v, "+ "Syscalls: syscalls_%v, Resources: resources_%v, Consts: consts_%v,"+ "Flags: flags_%v}, types_%v, InitTarget)\n}\n\n", target.OS, target.Arch, target.Arch, target.PtrSize, target.PageSize, - target.NumPages, target.DataOffset, target.LittleEndian, target.ExecutorUsesShmem, + target.NumPages, target.DataOffset, target.LittleEndian, target.Arch, target.Arch, target.Arch, target.Arch, target.Arch) fmt.Fprintf(out, "var resources_%v = ", target.Arch) @@ -298,9 +297,6 @@ func generateExecutorSyscalls(target *targets.Target, syscalls []*prog.Syscall, if target.ExecutorUsesForkServer { data.ForkServer = 1 } - if target.ExecutorUsesShmem { - data.Shmem = 1 - } defines := make(map[string]string) for _, c := range syscalls { var attrVals []uint64 @@ -417,7 +413,6 @@ struct call_props_t { {{range $attr := $.CallProps}} #define GOARCH "{{.GOARCH}}" #define SYZ_REVISION "{{.Revision}}" #define SYZ_EXECUTOR_USES_FORK_SERVER {{.ForkServer}} -#define SYZ_EXECUTOR_USES_SHMEM {{.Shmem}} #define SYZ_PAGE_SIZE {{.PageSize}} #define SYZ_NUM_PAGES {{.NumPages}} #define SYZ_DATA_OFFSET {{.DataOffset}} diff --git a/sys/targets/targets.go b/sys/targets/targets.go index 35068af01..5483897a1 100644 --- a/sys/targets/targets.go +++ b/sys/targets/targets.go @@ -66,8 +66,6 @@ type osCommon struct { // E.g. "__NR_" or "SYS_". SyscallPrefix string // ipc<->executor communication tuning. - // If ExecutorUsesShmem, programs and coverage are passed through shmem, otherwise via pipes. - ExecutorUsesShmem bool // If ExecutorUsesForkServer, executor uses extended protocol with handshake. ExecutorUsesForkServer bool // Special mode for OSes that do not have support for building Go binaries. @@ -139,19 +137,19 @@ const ( GVisor = "gvisor" Starnix = "starnix" - AMD64 = "amd64" - ARM64 = "arm64" - ARM = "arm" - I386 = "386" - MIPS64LE = "mips64le" - PPC64LE = "ppc64le" - S390x = "s390x" - RiscV64 = "riscv64" - TestArch64 = "64" - TestArch64Fuzz = "64_fuzz" - TestArch64Fork = "64_fork" - TestArch32Shmem = "32_shmem" - TestArch32ForkShmem = "32_fork_shmem" + AMD64 = "amd64" + ARM64 = "arm64" + ARM = "arm" + I386 = "386" + MIPS64LE = "mips64le" + PPC64LE = "ppc64le" + S390x = "s390x" + RiscV64 = "riscv64" + TestArch64 = "64" + TestArch64Fuzz = "64_fuzz" + TestArch64Fork = "64_fork" + TestArch32 = "32" + TestArch32Fork = "32_fork" ) func Get(OS, arch string) *Target { @@ -193,7 +191,6 @@ var List = map[string]map[string]*Target{ osCommon: osCommon{ SyscallNumbers: true, SyscallPrefix: "SYS_", - ExecutorUsesShmem: false, ExecutorUsesForkServer: false, }, }, @@ -205,7 +202,6 @@ var List = map[string]map[string]*Target{ osCommon: osCommon{ SyscallNumbers: true, SyscallPrefix: "SYS_", - ExecutorUsesShmem: true, ExecutorUsesForkServer: true, }, }, @@ -222,11 +218,10 @@ var List = map[string]map[string]*Target{ osCommon: osCommon{ SyscallNumbers: true, SyscallPrefix: "SYS_", - ExecutorUsesShmem: false, ExecutorUsesForkServer: true, }, }, - TestArch32Shmem: { + TestArch32: { PtrSize: 4, PageSize: 8 << 10, Int64Alignment: 4, @@ -235,11 +230,10 @@ var List = map[string]map[string]*Target{ SyscallNumbers: true, Int64SyscallArgs: true, SyscallPrefix: "SYS_", - ExecutorUsesShmem: true, ExecutorUsesForkServer: false, }, }, - TestArch32ForkShmem: { + TestArch32Fork: { PtrSize: 4, PageSize: 4 << 10, CFlags: []string{"-static-pie"}, @@ -247,7 +241,6 @@ var List = map[string]map[string]*Target{ SyscallNumbers: true, Int64SyscallArgs: true, SyscallPrefix: "SYS_", - ExecutorUsesShmem: true, ExecutorUsesForkServer: true, HostFuzzer: true, }, @@ -498,7 +491,6 @@ var oses = map[string]osCommon{ Linux: { SyscallNumbers: true, SyscallPrefix: "__NR_", - ExecutorUsesShmem: true, ExecutorUsesForkServer: true, KernelObject: "vmlinux", PseudoSyscallDeps: map[string][]string{ @@ -515,7 +507,6 @@ var oses = map[string]osCommon{ SyscallNumbers: true, Int64SyscallArgs: true, SyscallPrefix: "SYS_", - ExecutorUsesShmem: true, ExecutorUsesForkServer: true, KernelObject: "kernel.full", CPP: "g++", @@ -530,10 +521,9 @@ var oses = map[string]osCommon{ }, }, Darwin: { - SyscallNumbers: true, - Int64SyscallArgs: true, - SyscallPrefix: "SYS_", - ExecutorUsesShmem: true, + SyscallNumbers: true, + Int64SyscallArgs: true, + SyscallPrefix: "SYS_", // FIXME(HerrSpace): ForkServer is b0rked in a peculiar way. I did some // printf debugging in parseOutput in ipc.go. It usually works for a // few executions. Eventually the reported ncmd stops making sense and @@ -553,14 +543,12 @@ var oses = map[string]osCommon{ BuildOS: Linux, SyscallNumbers: true, SyscallPrefix: "SYS_", - ExecutorUsesShmem: true, ExecutorUsesForkServer: true, KernelObject: "netbsd.gdb", }, OpenBSD: { SyscallNumbers: false, SyscallPrefix: "SYS_", - ExecutorUsesShmem: true, ExecutorUsesForkServer: true, KernelObject: "bsd.gdb", CPP: "ecpp", @@ -568,7 +556,6 @@ var oses = map[string]osCommon{ Fuchsia: { BuildOS: Linux, SyscallNumbers: false, - ExecutorUsesShmem: false, ExecutorUsesForkServer: false, HostFuzzer: true, ExecutorBin: "syz-executor", @@ -576,7 +563,6 @@ var oses = map[string]osCommon{ }, Windows: { SyscallNumbers: false, - ExecutorUsesShmem: false, ExecutorUsesForkServer: false, ExeExtension: ".exe", KernelObject: "vmlinux", @@ -765,7 +751,6 @@ func initTarget(target *Target, OS, arch string) { } // Temporal hack. if OS == Linux && os.Getenv("SYZ_STARNIX_HACK") != "" { - target.ExecutorUsesShmem = false target.ExecutorUsesForkServer = false target.HostFuzzer = true } diff --git a/sys/test/arch_32.txt b/sys/test/arch_32.txt index 192f308c3..aaa9963a9 100644 --- a/sys/test/arch_32.txt +++ b/sys/test/arch_32.txt @@ -1,7 +1,7 @@ # Copyright 2022 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. -meta arches["32_shmem", "32_fork_shmem"] +meta arches["32", "32_fork"] resource unsupported3[int32] diff --git a/sys/test/csource.txt.const b/sys/test/csource.txt.const index 2c90daac7..3a0343e4d 100644 --- a/sys/test/csource.txt.const +++ b/sys/test/csource.txt.const @@ -1,4 +1,4 @@ -arches = 32_fork_shmem, 32_shmem, 64, 64_fork +arches = 32, 32_fork, 64, 64_fork BIT_0 = 1 BIT_1 = 2 BIT_0_AND_1 = 3 diff --git a/sys/test/expressions.txt.const b/sys/test/expressions.txt.const index 77e181281..02c3c0e23 100644 --- a/sys/test/expressions.txt.const +++ b/sys/test/expressions.txt.const @@ -1,3 +1,3 @@ -arches = 32_fork_shmem, 32_shmem, 64, 64_fork, 64_fuzz +arches = 32, 32_fork, 64, 64_fork, 64_fuzz FIELD_FLAG1 = 2 -FIELD_FLAG2 = 4
\ No newline at end of file +FIELD_FLAG2 = 4 diff --git a/sys/test/test.txt.const b/sys/test/test.txt.const index 11f548df0..de2507e56 100644 --- a/sys/test/test.txt.const +++ b/sys/test/test.txt.const @@ -1,6 +1,6 @@ -arches = 32_fork_shmem, 32_shmem, 64, 64_fork +arches = 32, 32_fork, 64, 64_fork IPPROTO_ICMPV6 = 58 IPPROTO_TCP = 6 IPPROTO_UDP = 17 -ONLY_32BITS_CONST = 32_fork_shmem:1, 32_shmem:1 +ONLY_32BITS_CONST = 32:1, 32_fork:1 ARCH_64_SPECIFIC_CONST = 64:10 diff --git a/sys/test/test/align0 b/sys/test/test/align0 index 82272f5a9..e2aaf61ee 100644 --- a/sys/test/test/align0 +++ b/sys/test/test/align0 @@ -1,5 +1,5 @@ -# 32_shmem has 4-byte alignment for int64 and everything goes havoc. -# requires: -arch=32_shmem littleendian +# 32 has 4-byte alignment for int64 and everything goes havoc. +# requires: -arch=32 littleendian syz_compare(&AUTO="010000000200000003000400000000000500000000000000", 0x18, &AUTO=@align0={0x1, 0x2, 0x3, 0x4, 0x5}, AUTO) syz_compare(&AUTO="", 0x18, &AUTO=@align0={0x0, 0x0, 0x0, 0x0, 0x0}, 0x17) # EBADF diff --git a/sys/test/test/align0_be b/sys/test/test/align0_be index 00f251cc9..f9072e841 100644 --- a/sys/test/test/align0_be +++ b/sys/test/test/align0_be @@ -1,5 +1,5 @@ -# 32_shmem has 4-byte alignment for int64 and everything goes havoc. -# requires: -arch=32_shmem -littleendian +# 32 has 4-byte alignment for int64 and everything goes havoc. +# requires: -arch=32 -littleendian syz_compare(&AUTO="000100000000000203000004000000000000000000000005", 0x18, &AUTO=@align0={0x1, 0x2, 0x3, 0x4, 0x5}, AUTO) syz_compare(&AUTO="", 0x18, &AUTO=@align0={0x0, 0x0, 0x0, 0x0, 0x0}, 0x17) # EBADF diff --git a/sys/test/test/bf b/sys/test/test/bf index f35ff1336..6d7bb6364 100644 --- a/sys/test/test/bf +++ b/sys/test/test/bf @@ -1,5 +1,5 @@ -# 32_shmem has 4-byte alignment for int64 and everything goes havoc. -# requires: -arch=32_shmem littleendian +# 32 has 4-byte alignment for int64 and everything goes havoc. +# requires: -arch=32 littleendian syz_compare(&AUTO="ab03000000000000cdcdcdcdcdcdcdcdebffff03ab0303abaa00000000000000", 0x20, &AUTO=@bf0={0xabab, 0xcdcdcdcdcdcdcdcd, 0xabab, 0xffff, 0xffffff, 0xabab, 0xabab, 0xaaa}, AUTO) syz_compare(&AUTO="dcfcde563422f10e", 0x8, &AUTO=@bf2={0x0abc, 0x0bcd, 0xcdef, 0x123456, 0x78ef12}, AUTO) diff --git a/sys/test/test/bf2 b/sys/test/test/bf2 index e0345388b..82b9a0a1f 100644 --- a/sys/test/test/bf2 +++ b/sys/test/test/bf2 @@ -1,5 +1,5 @@ -# 32_shmem has 4-byte alignment for int64 and everything goes havoc. -# requires: -arch=32_shmem littleendian +# 32 has 4-byte alignment for int64 and everything goes havoc. +# requires: -arch=32 littleendian syz_compare(&AUTO="1200000034067800", AUTO, &AUTO=@bf4={0x12, {0x34, 0x56, 0x78}}, AUTO) syz_compare(&AUTO="1200000034060000", AUTO, &AUTO=@bf5={0x12, {0x34, 0x56}}, AUTO) diff --git a/sys/test/test/bf2_be b/sys/test/test/bf2_be index 094c3f6e2..1c39a9f99 100644 --- a/sys/test/test/bf2_be +++ b/sys/test/test/bf2_be @@ -1,5 +1,5 @@ -# 32_shmem has 4-byte alignment for int64 and everything goes havoc. -# requires: -arch=32_shmem -littleendian +# 32 has 4-byte alignment for int64 and everything goes havoc. +# requires: -arch=32 -littleendian syz_compare(&AUTO="1200000034607800", AUTO, &AUTO=@bf4={0x12, {0x34, 0x56, 0x78}}, AUTO) syz_compare(&AUTO="1200000034600000", AUTO, &AUTO=@bf5={0x12, {0x34, 0x56}}, AUTO) diff --git a/sys/test/test/bf_be b/sys/test/test/bf_be index 4c7fc85ec..b03794e91 100644 --- a/sys/test/test/bf_be +++ b/sys/test/test/bf_be @@ -1,5 +1,5 @@ -# 32_shmem has 4-byte alignment for int64 and everything goes havoc. -# requires: -arch=32_shmem -littleendian +# 32 has 4-byte alignment for int64 and everything goes havoc. +# requires: -arch=32 -littleendian syz_compare(&AUTO="eac0000000000000cdcdcdcdcdcdcdcd5fffffc075607560aa", 0x20, &AUTO=@bf0={0xabab, 0xcdcdcdcdcdcdcdcd, 0xabab, 0xffff, 0xffffff, 0xabab, 0xabab, 0xaaa}, AUTO) syz_compare(&AUTO="ccddef23456ef120", 0x8, &AUTO=@bf2={0x0abc, 0x0bcd, 0xcdef, 0x123456, 0x78ef12}, AUTO) |
