aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-06-21 14:38:08 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-06-22 16:40:45 +0200
commit2a075d57ab619ae5333c823cc260a722ab0c47fe (patch)
tree0877143833caae9b98744a237b0e3a3694348a6b /tools
parentc31f96a8c65c0757078ea77218905c73fc1068d4 (diff)
pkg/report: allow to specify suppressions per OS
Currently all (linux-specific) suppressions are hardcoded in mgrconfig. This is very wrong. Move them to pkg/report and allow to specify per OS. Add gvisor-specific suppressions. This required a bit of refactoring. Introduce mgrconfig.KernelObj finally. Make report.NewReporter and vm.Create accept mgrconfig directly instead of passing it as multiple scattered args. Remove tools/syz-parse and it always did the same as tools/syz-symbolize. Simplify global vars in syz-manager/cover.go. Create reporter eagerly in manager. Use sort.Slice more. Overall -90 lines removed.
Diffstat (limited to 'tools')
-rw-r--r--tools/syz-crush/crush.go7
-rw-r--r--tools/syz-parse/syz-parse.go57
-rw-r--r--tools/syz-repro/repro.go5
-rw-r--r--tools/syz-symbolize/symbolize.go11
4 files changed, 14 insertions, 66 deletions
diff --git a/tools/syz-crush/crush.go b/tools/syz-crush/crush.go
index b73c9027d..bb07b72c3 100644
--- a/tools/syz-crush/crush.go
+++ b/tools/syz-crush/crush.go
@@ -10,7 +10,6 @@ import (
"flag"
"fmt"
"io/ioutil"
- "path/filepath"
"sync"
"sync/atomic"
"time"
@@ -39,13 +38,11 @@ func main() {
if _, err := prog.GetTarget(cfg.TargetOS, cfg.TargetArch); err != nil {
log.Fatalf("%v", err)
}
- env := mgrconfig.CreateVMEnv(cfg, false)
- vmPool, err := vm.Create(cfg.Type, env)
+ vmPool, err := vm.Create(cfg, false)
if err != nil {
log.Fatalf("%v", err)
}
- reporter, err := report.NewReporter(cfg.TargetOS, cfg.Type,
- cfg.KernelSrc, filepath.Dir(cfg.Vmlinux), nil, cfg.ParsedIgnores)
+ reporter, err := report.NewReporter(cfg)
if err != nil {
log.Fatalf("%v", err)
}
diff --git a/tools/syz-parse/syz-parse.go b/tools/syz-parse/syz-parse.go
deleted file mode 100644
index 64841dab6..000000000
--- a/tools/syz-parse/syz-parse.go
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2017 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.
-
-package main
-
-import (
- "fmt"
- "io/ioutil"
- "os"
-
- "github.com/google/syzkaller/pkg/report"
-)
-
-func main() {
- if len(os.Args) < 2 {
- usage()
- return
- }
- switch os.Args[1] {
- case "report":
- if len(os.Args) != 4 {
- usage()
- return
- }
- parseReport(os.Args[2], os.Args[3])
- default:
- usage()
- }
-}
-
-func usage() {
- fmt.Fprintf(os.Stderr, "usage:\n")
- fmt.Fprintf(os.Stderr, " syz-parse report <OS> <CRASH.log>\n")
- os.Exit(1)
-}
-
-func parseReport(os, file string) {
- log, err := ioutil.ReadFile(file)
- if err != nil {
- fmt.Printf("Error: %v\n", err)
- return
- }
- reporter, err := report.NewReporter(os, "", "", "", nil, nil)
- if err != nil {
- fmt.Printf("Error: %v\n", err)
- return
- }
- rep := reporter.Parse(log)
- if rep == nil {
- fmt.Printf("Couldn't find any reports\n")
- return
- }
- fmt.Printf("=======\n")
- fmt.Printf("Title: %v\n", rep.Title)
- fmt.Printf("Corrupted: %v\n", rep.Corrupted)
- fmt.Printf("Report:\n%s\n", rep.Report)
-}
diff --git a/tools/syz-repro/repro.go b/tools/syz-repro/repro.go
index 8fcb04e41..84e2d96f9 100644
--- a/tools/syz-repro/repro.go
+++ b/tools/syz-repro/repro.go
@@ -41,8 +41,7 @@ func main() {
if _, err := prog.GetTarget(cfg.TargetOS, cfg.TargetArch); err != nil {
log.Fatalf("%v", err)
}
- env := mgrconfig.CreateVMEnv(cfg, false)
- vmPool, err := vm.Create(cfg.Type, env)
+ vmPool, err := vm.Create(cfg, false)
if err != nil {
log.Fatalf("%v", err)
}
@@ -57,7 +56,7 @@ func main() {
for i := range vmIndexes {
vmIndexes[i] = i
}
- reporter, err := report.NewReporter(cfg.TargetOS, cfg.Type, cfg.KernelSrc, "", nil, cfg.ParsedIgnores)
+ reporter, err := report.NewReporter(cfg)
if err != nil {
log.Fatalf("%v", err)
}
diff --git a/tools/syz-symbolize/symbolize.go b/tools/syz-symbolize/symbolize.go
index e683a5b01..9020d2fcc 100644
--- a/tools/syz-symbolize/symbolize.go
+++ b/tools/syz-symbolize/symbolize.go
@@ -11,6 +11,7 @@ import (
"runtime"
"github.com/google/syzkaller/pkg/report"
+ "github.com/google/syzkaller/syz-manager/mgrconfig"
)
var (
@@ -26,7 +27,12 @@ func main() {
flag.PrintDefaults()
os.Exit(1)
}
- reporter, err := report.NewReporter(*flagOS, "", *flagKernelSrc, *flagKernelObj, nil, nil)
+ cfg := &mgrconfig.Config{
+ TargetOS: *flagOS,
+ KernelObj: *flagKernelObj,
+ KernelSrc: *flagKernelSrc,
+ }
+ reporter, err := report.NewReporter(cfg)
if err != nil {
fmt.Fprintf(os.Stderr, "failed to create reporter: %v\n", err)
os.Exit(1)
@@ -44,5 +50,8 @@ func main() {
fmt.Fprintf(os.Stderr, "failed to symbolize report: %v\n", err)
os.Exit(1)
}
+ fmt.Printf("TITLE: %v\n", rep.Title)
+ fmt.Printf("CORRUPTED: %v\n", rep.Corrupted)
+ fmt.Printf("\n")
os.Stdout.Write(rep.Report)
}