From cda1fcb742f957d6396e32c75f95575d81543fd4 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Sun, 6 May 2018 16:58:38 +0200 Subject: sys: dedup mmap code across OSes Update #538 --- sys/linux/init.go | 34 ++-------------------------------- 1 file changed, 2 insertions(+), 32 deletions(-) (limited to 'sys/linux') diff --git a/sys/linux/init.go b/sys/linux/init.go index 86bdb8bde..31d295709 100644 --- a/sys/linux/init.go +++ b/sys/linux/init.go @@ -8,6 +8,7 @@ import ( "github.com/google/syzkaller/prog" "github.com/google/syzkaller/sys/linux/gen" + "github.com/google/syzkaller/sys/targets" ) func init() { @@ -20,12 +21,7 @@ func init() { func initTarget(target *prog.Target) { arch := &arch{ - mmapSyscall: target.SyscallMap["mmap"], clockGettimeSyscall: target.SyscallMap["clock_gettime"], - PROT_READ: target.ConstMap["PROT_READ"], - PROT_WRITE: target.ConstMap["PROT_WRITE"], - MAP_ANONYMOUS: target.ConstMap["MAP_ANONYMOUS"], - MAP_PRIVATE: target.ConstMap["MAP_PRIVATE"], MAP_FIXED: target.ConstMap["MAP_FIXED"], MREMAP_MAYMOVE: target.ConstMap["MREMAP_MAYMOVE"], MREMAP_FIXED: target.ConstMap["MREMAP_FIXED"], @@ -48,7 +44,7 @@ func initTarget(target *prog.Target) { AF_BLUETOOTH: target.ConstMap["AF_BLUETOOTH"], } - target.MakeMmap = arch.makeMmap + target.MakeMmap = targets.MakePosixMmap(target) target.SanitizeCall = arch.sanitizeCall target.SpecialTypes = map[string]func(g *prog.Gen, typ prog.Type, old prog.Arg) ( prog.Arg, []*prog.Call){ @@ -74,10 +70,6 @@ func initTarget(target *prog.Target) { } } -const ( - invalidFD = ^uint64(0) -) - var ( // This should not be here, but for now we expose this for syz-fuzzer. KCOV_INIT_TRACE uintptr @@ -94,13 +86,8 @@ var ( ) type arch struct { - mmapSyscall *prog.Syscall clockGettimeSyscall *prog.Syscall - PROT_READ uint64 - PROT_WRITE uint64 - MAP_ANONYMOUS uint64 - MAP_PRIVATE uint64 MAP_FIXED uint64 MREMAP_MAYMOVE uint64 MREMAP_FIXED uint64 @@ -123,23 +110,6 @@ type arch struct { AF_BLUETOOTH uint64 } -// createMmapCall creates a "normal" mmap call that maps [addr, addr+size) memory range. -func (arch *arch) makeMmap(addr, size uint64) *prog.Call { - meta := arch.mmapSyscall - return &prog.Call{ - Meta: meta, - Args: []prog.Arg{ - prog.MakeVmaPointerArg(meta.Args[0], addr, size), - prog.MakeConstArg(meta.Args[1], size), - prog.MakeConstArg(meta.Args[2], arch.PROT_READ|arch.PROT_WRITE), - prog.MakeConstArg(meta.Args[3], arch.MAP_ANONYMOUS|arch.MAP_PRIVATE|arch.MAP_FIXED), - prog.MakeResultArg(meta.Args[4], nil, invalidFD), - prog.MakeConstArg(meta.Args[5], 0), - }, - Ret: prog.MakeReturnArg(meta.Ret), - } -} - func (arch *arch) sanitizeCall(c *prog.Call) { switch c.Meta.CallName { case "mmap": -- cgit mrf-deployment