diff options
Diffstat (limited to 'syz-cluster/pkg/api/api.go')
| -rw-r--r-- | syz-cluster/pkg/api/api.go | 94 |
1 files changed, 46 insertions, 48 deletions
diff --git a/syz-cluster/pkg/api/api.go b/syz-cluster/pkg/api/api.go index feb06be32..8c107b8f4 100644 --- a/syz-cluster/pkg/api/api.go +++ b/syz-cluster/pkg/api/api.go @@ -20,11 +20,20 @@ type FuzzTask struct { FuzzConfig } +const ( + FocusNet = "net" + FocusKVM = "kvm" + FocusIoUring = "io_uring" + FocusBPF = "bpf" + FocusFS = "fs" +) + // FuzzConfig represents a set of parameters passed to the fuzz step. +// The triage step aggregates multiple KernelFuzzConfig to construct FuzzConfig. type FuzzConfig struct { - Track string `json:"track"` // E.g. KASAN. - Config string `json:"config"` // Refers to workflow/configs/{}. - CorpusURL string `json:"corpus_url"` + Track string `json:"track"` // E.g. KASAN. + Focus []string `json:"focus"` + CorpusURLs []string `json:"corpus_urls"` // Don't expect kernel coverage for the patched area. SkipCoverCheck bool `json:"skip_cover_check"` // Only report the bugs that match the regexp. @@ -39,19 +48,24 @@ type Tree struct { EmailLists []string `json:"email_lists"` } +// KernelFuzzConfig is a specific fuzzing assignment. +// Based on it, the triage step will construct FuzzTasks. +type KernelFuzzConfig struct { + EmailLists []string `json:"email_lists"` + Track string `json:"track"` // E.g. KASAN. + KernelConfig string `json:"kernel_config"` + Focus string `json:"focus"` + CorpusURL string `json:"corpus_url"` + SkipCoverCheck bool `json:"skip_cover_check"` + BugTitleRe string `json:"bug_title_re"` +} + // FuzzTriageTarget is a single record in the list of supported fuzz configs. type FuzzTriageTarget struct { EmailLists []string `json:"email_lists"` Campaigns []*KernelFuzzConfig `json:"campaigns"` } -// KernelFuzzConfig is a specific fuzzing assignment. -// Based on it, the triage step will construct FuzzTasks. -type KernelFuzzConfig struct { - KernelConfig string `json:"kernel_config"` - FuzzConfig -} - type BuildRequest struct { Arch string `json:"arch"` TreeName string `json:"tree_name"` @@ -233,8 +247,8 @@ var DefaultTrees = []*Tree{ const ( netCorpusURL = `https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db` bpfCorpusURL = `https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db` - allCorpusURL = `https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db` fsCorpusURL = `https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db` + allCorpusURL = `https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db` ) const kasanTrack = "KASAN" @@ -245,12 +259,10 @@ var FuzzTargets = []*FuzzTriageTarget{ EmailLists: []string{`kvm@vger.kernel.org`}, Campaigns: []*KernelFuzzConfig{ { + Track: kasanTrack, KernelConfig: `upstream-apparmor-kasan.config`, - FuzzConfig: FuzzConfig{ - Track: kasanTrack, - Config: `kvm`, - CorpusURL: allCorpusURL, - }, + Focus: FocusKVM, + CorpusURL: allCorpusURL, }, }, }, @@ -258,12 +270,10 @@ var FuzzTargets = []*FuzzTriageTarget{ EmailLists: []string{`io-uring@vger.kernel.org`}, Campaigns: []*KernelFuzzConfig{ { + Track: kasanTrack, KernelConfig: `upstream-apparmor-kasan.config`, - FuzzConfig: FuzzConfig{ - Track: kasanTrack, - Config: `io-uring`, - CorpusURL: allCorpusURL, - }, + Focus: FocusIoUring, + CorpusURL: allCorpusURL, }, }, }, @@ -271,12 +281,10 @@ var FuzzTargets = []*FuzzTriageTarget{ EmailLists: []string{`bpf@vger.kernel.org`}, Campaigns: []*KernelFuzzConfig{ { + Track: kasanTrack, KernelConfig: `upstream-apparmor-kasan.config`, - FuzzConfig: FuzzConfig{ - Track: kasanTrack, - Config: `bpf`, - CorpusURL: bpfCorpusURL, - }, + Focus: FocusBPF, + CorpusURL: bpfCorpusURL, }, }, }, @@ -288,12 +296,10 @@ var FuzzTargets = []*FuzzTriageTarget{ }, Campaigns: []*KernelFuzzConfig{ { + Track: kasanTrack, KernelConfig: `upstream-apparmor-kasan.config`, - FuzzConfig: FuzzConfig{ - Track: kasanTrack, - Config: `net`, - CorpusURL: netCorpusURL, - }, + Focus: FocusNet, + CorpusURL: netCorpusURL, }, }, }, @@ -307,11 +313,9 @@ var FuzzTargets = []*FuzzTriageTarget{ Campaigns: []*KernelFuzzConfig{ { KernelConfig: `upstream-apparmor-kasan.config`, - FuzzConfig: FuzzConfig{ - Track: kasanTrack, - Config: `fs`, - CorpusURL: fsCorpusURL, - }, + Track: kasanTrack, + Focus: FocusFS, + CorpusURL: fsCorpusURL, }, }, }, @@ -320,13 +324,10 @@ var FuzzTargets = []*FuzzTriageTarget{ Campaigns: []*KernelFuzzConfig{ { KernelConfig: `upstream-apparmor-kasan.config`, - FuzzConfig: FuzzConfig{ - Track: kasanTrack, - Config: `all`, - CorpusURL: allCorpusURL, - // Not all mm/ code is instrumented with KCOV. - SkipCoverCheck: true, - }, + Track: kasanTrack, + CorpusURL: allCorpusURL, + // Not all mm/ code is instrumented with KCOV. + SkipCoverCheck: true, }, }, }, @@ -335,11 +336,8 @@ var FuzzTargets = []*FuzzTriageTarget{ Campaigns: []*KernelFuzzConfig{ { KernelConfig: `upstream-apparmor-kasan.config`, - FuzzConfig: FuzzConfig{ - Track: kasanTrack, - Config: `all`, - CorpusURL: allCorpusURL, - }, + Track: kasanTrack, + CorpusURL: allCorpusURL, }, }, }, |
