-
Notifications
You must be signed in to change notification settings - Fork 1.3k
syz-cluster: assorted updates #6353
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
80c0327
to
5359099
Compare
cd28977
to
28c6fa9
Compare
1b93a29
to
364d86b
Compare
parameters: | ||
- name: test-name | ||
value: "Build Base" | ||
value: "Build Base{{=jsonpath(inputs.parameters.element, '$.suffix')}}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will we have " " after "Base" word?
syz-cluster/pkg/api/api.go
Outdated
fsCorpusURL = `https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db` | ||
) | ||
|
||
const kasanSuffix = " [KASAN]" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
" [...]" part here is a formatting detail.
I think testName() is a better place for it.
syz-cluster/pkg/api/api.go
Outdated
|
||
// FuzzConfig represents a set of parameters passed to the fuzz step. | ||
type FuzzConfig struct { | ||
Suffix string `json:"suffix"` // E.g. KASAN. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Suffix" is how you use it.
I think something like "type" or "test_type" will improve the readability here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewed the part till "syz-cluster: prefix fuzzing-related steps" including it.
First build and boot test the base kernel, then proceed to the patched kernel. It prevents us from reporting build/boot errors not introduced by the patch.
Adjut the workflow template and the API to run multiple fuzzing campaigns as a part of single patch series processing.
Instead of passing the values individually, save the FuzzConfig object as JSON and pass it as an artifact. This will simplify adding more new fields.
It will help distinguish them once there are multiple ones.
During triage, process each fuzzing campaign separately as they may have different base kernel revisions (e.g. if the newest revisions of the kernel no longer build/boot under the specific kernel configuration). Refactor the representation of the fuzzing targets in api.go.
Instead of just checking whether the bug was observed on the base crash, accept a regexp of accepted bug titles as well.
Set up a KMSAN fuzzing campaign in parallel to KASAN for the net patches.
Prefixes seem to distinguish the steps better than suffixes.
There's no reason to do first one and then another.
3G is not enough for kernels with KMSAN. Slightly decrease the number of used VMs to fit into the available CPUs/RAM.
KMSAN fails to boot when a specific q35 version is specified.
Instead of a predefined set of manually written syz-manager configs, construct it dynamically from different bits. During triage, select not just one, but all matching fuzzer configurations and then merge them together.
We don't need it to hold it for the call to the externally supplied callback.
There are still situations where we don't properly terminate fuzzing on context cancelation. Add more logging to debug it.
If a boot test step failed and we don't report the finding to the dashboard, print the report/output to the console to facilitate debugging.
Otherwise reproductions sometimes take almost all VMs.
364d86b
to
7ee3357
Compare
A set of refactorings and enhancements for
syz-cluster
to support running multiple fuzzing campaigns per each patch series.For networking series, build and fuzz a
CONFIG_KMSAN=y
kernel in addition to fuzzing the KASAN kernel.Instead of picking one of the predefined fuzzer configuration, construct the resulting config from all the matching configuration bits.