@@ -20,11 +20,20 @@ type FuzzTask struct {
2020 FuzzConfig
2121}
2222
23+ const (
24+ FocusNet = "net"
25+ FocusKVM = "kvm"
26+ FocusIoUring = "io_uring"
27+ FocusBPF = "bpf"
28+ FocusFS = "fs"
29+ )
30+
2331// FuzzConfig represents a set of parameters passed to the fuzz step.
32+ // The triage step aggregates multiple KernelFuzzConfig to construct FuzzConfig.
2433type FuzzConfig struct {
25- Track string `json:"track"` // E.g. KASAN.
26- Config string `json:"config"` // Refers to workflow/configs/{}.
27- CorpusURL string `json:"corpus_url "`
34+ Track string `json:"track"` // E.g. KASAN.
35+ Focus [] string `json:"focus"`
36+ CorpusURLs [] string `json:"corpus_urls "`
2837 // Don't expect kernel coverage for the patched area.
2938 SkipCoverCheck bool `json:"skip_cover_check"`
3039 // Only report the bugs that match the regexp.
@@ -39,19 +48,24 @@ type Tree struct {
3948 EmailLists []string `json:"email_lists"`
4049}
4150
51+ // KernelFuzzConfig is a specific fuzzing assignment.
52+ // Based on it, the triage step will construct FuzzTasks.
53+ type KernelFuzzConfig struct {
54+ EmailLists []string `json:"email_lists"`
55+ Track string `json:"track"` // E.g. KASAN.
56+ KernelConfig string `json:"kernel_config"`
57+ Focus string `json:"focus"`
58+ CorpusURL string `json:"corpus_url"`
59+ SkipCoverCheck bool `json:"skip_cover_check"`
60+ BugTitleRe string `json:"bug_title_re"`
61+ }
62+
4263// FuzzTriageTarget is a single record in the list of supported fuzz configs.
4364type FuzzTriageTarget struct {
4465 EmailLists []string `json:"email_lists"`
4566 Campaigns []* KernelFuzzConfig `json:"campaigns"`
4667}
4768
48- // KernelFuzzConfig is a specific fuzzing assignment.
49- // Based on it, the triage step will construct FuzzTasks.
50- type KernelFuzzConfig struct {
51- KernelConfig string `json:"kernel_config"`
52- FuzzConfig
53- }
54-
5569type BuildRequest struct {
5670 Arch string `json:"arch"`
5771 TreeName string `json:"tree_name"`
@@ -233,8 +247,8 @@ var DefaultTrees = []*Tree{
233247const (
234248 netCorpusURL = `https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db`
235249 bpfCorpusURL = `https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db`
236- allCorpusURL = `https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db`
237250 fsCorpusURL = `https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db`
251+ allCorpusURL = `https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db`
238252)
239253
240254const kasanTrack = "KASAN"
@@ -245,38 +259,32 @@ var FuzzTargets = []*FuzzTriageTarget{
245259 EmailLists : []string {`kvm@vger.kernel.org` },
246260 Campaigns : []* KernelFuzzConfig {
247261 {
262+ Track : kasanTrack ,
248263 KernelConfig : `upstream-apparmor-kasan.config` ,
249- FuzzConfig : FuzzConfig {
250- Track : kasanTrack ,
251- Config : `kvm` ,
252- CorpusURL : allCorpusURL ,
253- },
264+ Focus : FocusKVM ,
265+ CorpusURL : allCorpusURL ,
254266 },
255267 },
256268 },
257269 {
258270 EmailLists : []string {`io-uring@vger.kernel.org` },
259271 Campaigns : []* KernelFuzzConfig {
260272 {
273+ Track : kasanTrack ,
261274 KernelConfig : `upstream-apparmor-kasan.config` ,
262- FuzzConfig : FuzzConfig {
263- Track : kasanTrack ,
264- Config : `io-uring` ,
265- CorpusURL : allCorpusURL ,
266- },
275+ Focus : FocusIoUring ,
276+ CorpusURL : allCorpusURL ,
267277 },
268278 },
269279 },
270280 {
271281 EmailLists : []string {`bpf@vger.kernel.org` },
272282 Campaigns : []* KernelFuzzConfig {
273283 {
284+ Track : kasanTrack ,
274285 KernelConfig : `upstream-apparmor-kasan.config` ,
275- FuzzConfig : FuzzConfig {
276- Track : kasanTrack ,
277- Config : `bpf` ,
278- CorpusURL : bpfCorpusURL ,
279- },
286+ Focus : FocusBPF ,
287+ CorpusURL : bpfCorpusURL ,
280288 },
281289 },
282290 },
@@ -288,12 +296,10 @@ var FuzzTargets = []*FuzzTriageTarget{
288296 },
289297 Campaigns : []* KernelFuzzConfig {
290298 {
299+ Track : kasanTrack ,
291300 KernelConfig : `upstream-apparmor-kasan.config` ,
292- FuzzConfig : FuzzConfig {
293- Track : kasanTrack ,
294- Config : `net` ,
295- CorpusURL : netCorpusURL ,
296- },
301+ Focus : FocusNet ,
302+ CorpusURL : netCorpusURL ,
297303 },
298304 },
299305 },
@@ -307,11 +313,9 @@ var FuzzTargets = []*FuzzTriageTarget{
307313 Campaigns : []* KernelFuzzConfig {
308314 {
309315 KernelConfig : `upstream-apparmor-kasan.config` ,
310- FuzzConfig : FuzzConfig {
311- Track : kasanTrack ,
312- Config : `fs` ,
313- CorpusURL : fsCorpusURL ,
314- },
316+ Track : kasanTrack ,
317+ Focus : FocusFS ,
318+ CorpusURL : fsCorpusURL ,
315319 },
316320 },
317321 },
@@ -320,13 +324,10 @@ var FuzzTargets = []*FuzzTriageTarget{
320324 Campaigns : []* KernelFuzzConfig {
321325 {
322326 KernelConfig : `upstream-apparmor-kasan.config` ,
323- FuzzConfig : FuzzConfig {
324- Track : kasanTrack ,
325- Config : `all` ,
326- CorpusURL : allCorpusURL ,
327- // Not all mm/ code is instrumented with KCOV.
328- SkipCoverCheck : true ,
329- },
327+ Track : kasanTrack ,
328+ CorpusURL : allCorpusURL ,
329+ // Not all mm/ code is instrumented with KCOV.
330+ SkipCoverCheck : true ,
330331 },
331332 },
332333 },
@@ -335,11 +336,8 @@ var FuzzTargets = []*FuzzTriageTarget{
335336 Campaigns : []* KernelFuzzConfig {
336337 {
337338 KernelConfig : `upstream-apparmor-kasan.config` ,
338- FuzzConfig : FuzzConfig {
339- Track : kasanTrack ,
340- Config : `all` ,
341- CorpusURL : allCorpusURL ,
342- },
339+ Track : kasanTrack ,
340+ CorpusURL : allCorpusURL ,
343341 },
344342 },
345343 },
0 commit comments