From bbd4840872f70e3342308c6965ab196ed2606af1 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Sun, 8 Jan 2017 17:20:32 +0100 Subject: sys: extend kvm support Add new pseudo syscall syz_kvm_setup_cpu that setups VCPU into interesting states for execution. KVM is too difficult to setup otherwise. Lots of improvements possible, but this is a starting point. --- sysgen/syscallnr.go | 1 + sysgen/sysgen.go | 12 ++++++++++++ 2 files changed, 13 insertions(+) (limited to 'sysgen') diff --git a/sysgen/syscallnr.go b/sysgen/syscallnr.go index 7dc1296fa..991cfb03f 100644 --- a/sysgen/syscallnr.go +++ b/sysgen/syscallnr.go @@ -29,6 +29,7 @@ var syzkalls = map[string]uint64{ "syz_fuse_mount": 1000004, "syz_fuseblk_mount": 1000005, "syz_emit_ethernet": 1000006, + "syz_kvm_setup_cpu": 1000007, } func generateExecutorSyscalls(syscalls []Syscall, consts map[string]map[string]uint64) { diff --git a/sysgen/sysgen.go b/sysgen/sysgen.go index d16841577..afad086bf 100644 --- a/sysgen/sysgen.go +++ b/sysgen/sysgen.go @@ -602,6 +602,18 @@ func generateArg( dir = "in" opt = false fmt.Fprintf(out, "&PtrType{%v, Type: &BufferType{%v, Kind: BufferFilename}}", ptrCommonHdr, common()) + case "text": + if want := 1; len(a) != want { + failf("wrong number of arguments for %v arg %v, want %v, got %v", typ, name, want, len(a)) + } + kind := "" + switch a[0] { + case "x86_real", "x86_16", "x86_32", "x86_64": + kind = "Text_" + a[0] + default: + failf("unknown text type %v for %v arg %v", a[0], typ, name) + } + fmt.Fprintf(out, "&BufferType{%v, Kind: BufferText, Text: %v}", common(), kind) case "array": if len(a) != 1 && len(a) != 2 { failf("wrong number of arguments for %v arg %v, want 1 or 2, got %v", typ, name, len(a)) -- cgit mrf-deployment