diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-06-21 14:38:08 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-06-22 16:40:45 +0200 |
| commit | 2a075d57ab619ae5333c823cc260a722ab0c47fe (patch) | |
| tree | 0877143833caae9b98744a237b0e3a3694348a6b /tools | |
| parent | c31f96a8c65c0757078ea77218905c73fc1068d4 (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.go | 7 | ||||
| -rw-r--r-- | tools/syz-parse/syz-parse.go | 57 | ||||
| -rw-r--r-- | tools/syz-repro/repro.go | 5 | ||||
| -rw-r--r-- | tools/syz-symbolize/symbolize.go | 11 |
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) } |
