aboutsummaryrefslogtreecommitdiffstats
path: root/syz-cluster/workflow
Commit message (Collapse)AuthorAgeFilesLines
* syz-cluster: prioritize blob-based base commitsAleksandr Nogikh2026-01-131-24/+17
| | | | | | | | | | | | | Consider Cc'd mailing lists when selecting the exact base commit. Among the base commits determined based on blob sha value from the git patch, first select the ones that match both the trees of the Cc'd subsystems and their primary branches. If it gives no exact match, select a base commit that comes from a tree of a Cc'd subsystem. As fallback, take any subsystem tree. This should prevent valid, but suprising patch series triage results.
* syz-cluster: guess base patch by blob hashes from the diffAleksandr Nogikh2026-01-091-19/+78
| | | | | Before traversing the list of trees, attempt to determine the base tree/commit by looking at the SHA hashes from the supplied git diffs.
* syz-cluster: build commit graph during triageAleksandr Nogikh2026-01-091-0/+1
| | | | | It will accelerate various commit search operations by orders of magnitude.
* syz-cluster: refactor DockerfilesAleksandr Nogikh2025-12-314-19/+4
| | | | | | | Copy everything into the build context. Add a .dockerignore file to avoid copying the definitely unnecessary files and folders. Check copyrights presence in Dockerfiles.
* syz-cluster: fetch base kernels more oftenAleksandr Nogikh2025-11-261-2/+2
| | | | | Fetch and do build test of the base kernels 3 times per day instead of 2.
* syz-cluster: improve boot test loggingAleksandr Nogikh2025-11-211-8/+17
| | | | Collect trace logs and make them accessible via the web UI.
* syz-cluster: preserve branches when cloning a repoAleksandr Nogikh2025-11-172-2/+2
| | | | | | | | Remap remote branches to local ones both when polling remote repositories and when cloning the distributed repository. This will ensure that the branches are still accessible via TreeName/BranchName (it got broken during the latest changes).
* syz-cluster: simplify shared git repo mounting codeAleksandr Nogikh2025-11-124-58/+30
| | | | | | | | | | Instead of a complicated overlayfs setup, do a lightweight git clone in a way that the cloned local copy keeps on referencing the git object storage on the NFS. It's simpler code-wise and hopefully will be less susceptible to failures when local git operations coincide with a git fetch on the shared repository.
* syz-cluster: set workflow step retry strategyAleksandr Nogikh2025-10-222-0/+8
| | | | | | | | | | | | | When a triage or build step coincides with a cron job that polls new kernel trees, they often fail due to git command noticing that the repository is being updated. In this case, the step logs an error and exits with status=1. Argo workflows offers a functionality to retry such steps up to the specific number of times and with exponentially increasing backoffs. Configure the build and triage step templates to retry 3 times with 5 and then 10 minutes distance between the retries.
* syz-cluster: rewrite fuzz config generationAleksandr Nogikh2025-10-0718-352/+70
| | | | | | | | 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.
* syz-cluster: switch qemus to q35Aleksandr Nogikh2025-10-075-5/+5
| | | | KMSAN fails to boot when a specific q35 version is specified.
* syz-cluster: switch to 7G qemu VMsAleksandr Nogikh2025-10-0714-22/+22
| | | | | | 3G is not enough for kernels with KMSAN. Slightly decrease the number of used VMs to fit into the available CPUs/RAM.
* syz-cluster: support multiple campaigns per fuzz targetAleksandr Nogikh2025-10-073-27/+74
| | | | | | | | 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.
* syz-cluster: log boot step findingsAleksandr Nogikh2025-10-021-0/+3
| | | | | | 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.
* syz-cluster: prefix fuzzing-related stepsAleksandr Nogikh2025-10-011-9/+13
| | | | | Specify a track name for each fuzzing campaign. It will help distinguish them once there are multiple ones.
* syz-cluster: configure bug title filterAleksandr Nogikh2025-10-012-1/+28
| | | | | Instead of just checking whether the bug was observed on the base crash, accept a regexp of accepted bug titles as well.
* syz-cluster: pass fuzz config to the fuzz step as jsonAleksandr Nogikh2025-10-012-27/+36
| | | | | | 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.
* syz-cluster: support multiple fuzz tasksAleksandr Nogikh2025-10-011-6/+7
| | | | | Adjut the workflow template and the API to run multiple fuzzing campaigns as a part of single patch series processing.
* pkg/osutil: make VerboseError nest other errorsAleksandr Nogikh2025-10-011-2/+2
| | | | | After this change it fits more naturally into the Go's error functionality.
* syz-cluster: switch away from bitnami/gitAleksandr Nogikh2025-09-032-2/+2
| | | | | | The image is to be deprecated. Closes #6350.
* syz-cluster/workflow/fuzz-step: nuance archive upload errorsAleksandr Nogikh2025-09-031-5/+8
| | | | | If the archive turned out to be too large, just print an error message and don't return an error from the status update function.
* syz-cluster: log possible findings at the end of fuzzingAleksandr Nogikh2025-09-021-1/+15
| | | | | | | | | | It does happen that we detect a bug that was introduced in the patch series, but we don't report it becase no reliable reproducer was found. Let's at least log such cases to better understand the scale of the problem. 10 is an arbitrary cut-off value.
* syz-cluster: consider global/static variable valuesAleksandr Nogikh2025-08-293-25/+109
| | | | | | | | | When determining whether a patch series is worth fuzzing, consider not only the hashes of .text symbols, but also the hashes of the global (static and non-static) variables. As before, calculate the hashes during build and process them at the beginning of the fuzz step.
* syz-cluster: add ptp syscalls to net configAleksandr Nogikh2025-08-291-1/+2
| | | | The ptp series go to the netdev list.
* syz-cluster: fix a possible nil ptr derefAleksandr Nogikh2025-08-281-4/+6
| | | | | | | | | | Fix the following error: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x70 pc=0x16e3c5e] at main.reportResults ( /syz-cluster/workflow/build-step/main.go:146 ) at main.main ( /syz-cluster/workflow/build-step/main.go:84 )
* syz-cluster: define a separate fs configAleksandr Nogikh2025-08-212-0/+62
| | | | | When fuzzing fs-related series, enable fs syscalls and use the fs corpus.
* syz-cluster: share base kernel crashes between fuzzing sessionsAleksandr Nogikh2025-08-211-11/+26
| | | | | | Report base kernel crashes observed during fuzzing. Consult the common API for each patched kernel crash to see if it was already observed on the base kernel.
* syz-cluster: improve build step's status reportingAleksandr Nogikh2025-08-201-18/+27
| | | | | | In case of an infrastructure-related error, do not report the build as failed, but rather just report the error status for the particular session test.
* syz-cluster: fix hash comparison bugsAleksandr Nogikh2025-08-202-9/+18
| | | | And improve the tests for the method.
* syz-cluster: skip fuzzing if binaries are the sameAleksandr Nogikh2025-08-192-1/+47
| | | | | | | | If all symbol hashes between the base and the pathed kernel match, there's no reason to spend time fuzzing the series. Add a 'skipped' status to the enum of possible session test results and set it from the fuzz-step.
* syz-cluster: use fewer VMs in the boot stepAleksandr Nogikh2025-08-141-0/+6
| | | | | Our base configs have 4 VMs, but we don't need that many for the boot test.
* syz-cluster: adjust fuzz step resource requirementsAleksandr Nogikh2025-08-141-2/+2
| | | | | Use a smaller upper limit on CPUs since we're now using 32 Core nodes. Request at least 3GB/VM of RAM.
* syz-cluster: add vsock to the enabled syscalls for netAleksandr Nogikh2025-08-121-1/+1
| | | | vsock patches are sent to the net mailing lists.
* syz-cluster: skip coverage checks for some fuzz targetsAleksandr Nogikh2025-08-122-13/+24
| | | | | | | | There are cases when we do not need the "if the patched code is not reached within 30 minutes, abort fuzzing" check. This is e.g. the case of mm/ code that is not fully instrumented by KCOV.
* syz-cluster: refactor fuzz config structuresAleksandr Nogikh2025-08-121-4/+3
| | | | | | | | Keep the fuzz-step parameters in a separate structure to minimize the field duplication. It will also facilitate the reuse of the same syzkaller config in several fuzzing configurations.
* syz-cluster/workflow/configs: update net and bpf configsAleksandr Nogikh2025-08-112-3/+4
| | | | | | | | openat$6lowpan* is necessary for write$6lowpan*. openat$tcp* is necessary for write$tcp_*. bpf$BPF_LINK_CREATE depends on pidfd. bpf$MAP_UPDATE_ELEM needs socket. mount$bpf needs fstat.
* syz-cluster: support branch checkout in build-stepAleksandr Nogikh2025-08-081-2/+2
| | | | | | | During smoke builds, we may have a tree name/branch name pair instead of just a commit hash, which is the case for normal kernel build requests. Support both types of requests.
* syz-cluster: don't proceed on checkout errorAleksandr Nogikh2025-08-081-9/+9
| | | | | For smoke builds, move the corresponding code below the error check for the kernel checkout.
* syz-cluster: configure GC rules for rebuild-kernels-cron.yamlAleksandr Nogikh2025-08-081-0/+5
|
* syz-cluster: fix rebuild-kernels-cron.yamlAleksandr Nogikh2025-08-081-38/+54
| | | | | Kernel configs are a part of fuzzing configurations now, so we need to extract them from there to form kernel build requests.
* syz-cluster: add gcc to fuzz-step containerAleksandr Nogikh2025-08-071-1/+1
| | | | We use it for C repros by default.
* syz-cluster: fuzz io-uring patch seriesAleksandr Nogikh2025-08-062-0/+37
| | | | Use a custom set of enabled syscalls.
* syz-cluster: add a kvm configAleksandr Nogikh2025-07-312-0/+44
| | | | | Add a config to fuzz kvm patches. Listen on the kvm mailing list.
* syz-cluster: split tree and fuzz config selectionAleksandr Nogikh2025-07-311-5/+11
| | | | | | | | Not always are fuzzing targets well represented by their own kernel trees, so let's select a kernel tree and a fuzzing config separately. Drop explicit priorities and instead just sort the lists of trees and configs.
* syz-cluster: add cpp to the fuzz containerAleksandr Nogikh2025-07-291-1/+1
| | | | It's required by pkg/csource to generate C reproducers.
* syz-cluster/wokflow/fuzz-step: don't mount /outputAleksandr Nogikh2025-07-281-7/+0
| | | | | | | The fuzzing step only takes inputs and communicates via API. This will reduce the number of Error: open /mainctrfs/output/result.json: no such file or director errors in our logs.
* syz-cluster: consider multiple trees during triageAleksandr Nogikh2025-07-281-44/+53
| | | | | | | | | Even if the target tree is specified in the patch title, there happen to be cases when it's actually only applicable to some other trees. So instead of choosing one particular tree and sticking to it, obtain an ordered list of candidates and pick the first to which the series actually applies.
* syz-cluster: always upload triage logsAleksandr Nogikh2025-07-281-20/+18
| | | | | | | | We used to only upload them on triage failure, but let's improve the inspectability even for successfully finished triage jobs. Slightly refactor the controller API around the triage result submission.
* syz-cluster: add bpf tree info and configsAleksandr Nogikh2025-07-242-0/+40
| | | | | | Fuzz bpf patches differently from net patches. Monitor netfilter and bpf mailing lists
* syz-cluster: install llvm tools in the fuzz-step containerAleksandr Nogikh2025-07-231-1/+11
| | | | It's required for report symbolization and C repro generation.