aboutsummaryrefslogtreecommitdiffstats
path: root/syz-cluster/workflow
Commit message (Collapse)AuthorAgeFilesLines
...
* syz-cluster: set kernel build directory in fuzz configsAleksandr Nogikh2025-07-222-0/+2
| | | | These will allow pkg/cover work as intended.
* all: determine patched symbols for focused fuzzingAleksandr Nogikh2025-07-222-9/+69
| | | | | | | | | Hash the code section of the individual symbols from vmlinux.o and use it to determine the functions that changed their bodies between the base and the patched build. If the number of affected symbols is reasonable (<5%), fuzz it with the highest priority.
* pkg/manager: abort fuzzing if no patched code is reachedAleksandr Nogikh2025-07-181-7/+13
| | | | | Don't waste time doing focused fuzzing if no modified code has been reached in 30 minutes after corpus triage.
* syz-cluster: remember and share kernel tree URLsAleksandr Nogikh2025-07-173-7/+8
| | | | | | | | Share not just the tree name (mainline, net, etc), but also the full URL to check out the repository. For that, add one more field to the Build entity and adjust email reporting templates.
* syz-cluster: update Go version in DockerfilesAleksandr Nogikh2025-07-142-2/+2
| | | | | For some reason, it does not download the newer toolchain versions automatically.
* syz-cluster: upload and share build config and logAleksandr Nogikh2025-07-141-19/+32
|
* syz-cluster: add nci syscalls to the net configAleksandr Nogikh2025-07-101-1/+2
| | | | This prevents bind() and connect() from being disabled. See #6171.
* syz-cluster: properly report build errorsAleksandr Nogikh2025-07-081-15/+23
| | | | Extract Report/Log from the errors returned by build.Image().
* syz-cluster/workflow/boot-step: retry before failingAleksandr Nogikh2025-07-021-7/+17
| | | | | | Retry the boot test up to 3 times before letting it fail and reporting the failure as a finding. That should make sure there are fewer false positives amoung the "boot error" and "test error" bugs.
* syz-cluster: report reproducers for findingsAleksandr Nogikh2025-06-231-1/+13
| | | | | Move C repro generation from syz-manager to pkg/repro to avoid code duplication.
* syz-cluster: log build signatureAleksandr Nogikh2025-04-151-0/+1
| | | | | Before incorporating it into the process, let's see how reliable this value is at the moment.
* pkg/manager: provide diff fuzzer state dumpsAleksandr Nogikh2025-04-151-11/+14
| | | | | | Make the fuzzing step of syz-cluster create the manager.DiffStore object explicitly and dump its state to the logs after finishing the fuzzing session.
* syz-cluster: log fuzz-step terminationAleksandr Nogikh2025-04-151-0/+3
| | | | | | | Some of the fuzz jobs seem to be unable to finish in time. Add some logging to better understand what part if preventing the termination.
* syz-cluster: exclude gfs* and hfs fuzzing by defaultAleksandr Nogikh2025-04-151-1/+3
| | | | | | | These cause too many irrelevant crashes and distract the diff fuzzer. Disable the related syscalls until we're able to adjust them automatically.
* pkg/manager: wait until corpus is triaged for diff fuzzingAleksandr Nogikh2025-04-151-5/+6
| | | | | | | | | | | Track the right moment to start bug reproductions more exactly: 1) Either once 90% of the corpus is triaged (*). 2) Or once we are past 50% of the time dedicated for fuzzing. Whatever happens earlier. (*) The last percents are usually quite slow and they bring much less covered PCs that all the previous ones.
* syz-cluster: share and display triage logsAleksandr Nogikh2025-04-111-2/+6
| | | | For now, only share it for the skipped series.
* syz-cluster: share the series skip reasonAleksandr Nogikh2025-04-111-6/+10
| | | | | | | | The existing "no suitable commits found" reason is way too ambiguous. Make CommitSelector return the exact reason why it decides not to proceed with the particular patch series and display the reason on the web dashboard.
* syz-cluster: upload fuzz step artifactsAleksandr Nogikh2025-04-111-11/+73
| | | | | Compress and upload the artifacts folder every 30 minutes of fuzzing and once after the fuzzing is completed.
* syz-cluster: fix fuzz-step DockerfileAleksandr Nogikh2025-03-111-1/+1
| | | | | If we build the executor from an incomplete workdir, executor and the host process end up having different git revisions.
* syz-cluster: download latest corpuses from syzbotAleksandr Nogikh2025-03-113-5/+42
|
* syz-cluster: add net configAleksandr Nogikh2025-03-114-4/+50
| | | | | | Refactor Tree structure to host both the kernel config and the fuzzer config. Add some basic net fuzzing configs.
* syz-cluster: add qemu fuzzer configsAleksandr Nogikh2025-02-262-0/+31
| | | | | Use the simplest possible configurations for now. For some reason, this folder was forgotten in the previous PRs.
* syz-cluster: make image prefix and tag configurableAleksandr Nogikh2025-02-264-4/+4
| | | | | | | | | Accept IMAGE_PREFIX and IMAGE_TAG parameters that allow to reuse the Makefile and a lot of k8s configurations both for local and prod environments. Refactor Makefile: define build-* and push-* rules, use templates to avoid repetition.
* syz-cluster: build latest revisions of base kernelsAleksandr Nogikh2025-02-185-10/+149
| | | | | | Once a new kernel revision becomes available, build it to figure out whether it's buildable. This information will be used in the triage step to figure out the right base kernel revision.
* syz-cluster: update workflow templates with kustomizeAleksandr Nogikh2025-02-181-0/+8
| | | | This removes one of the required manual steps.
* syz-cluster: simplify the triage resultAleksandr Nogikh2025-02-181-16/+13
| | | | | | | | | | | Instead of giving several base commits to try, make the more concrete decision at the triage step and return only one option. This relies on the triager always having the information about the current state of the each tree, which will be added in the following commit. As the result, the workflow script becomes much simpler.
* syz-cluster: report session resultsAleksandr Nogikh2025-02-143-5/+5
| | | | | | | | | | | | Provide an API to set up the reporting of finished sessions for which syz-cluster collected reportable findings. The actual sending of the results is to be done in a separate component that would: 1) Call Next() to get the next report to send. 2) Call Confirm() to confirm that the report has been sent. 3) Call Upstream() if the report has been moderated and needs to be sent to e.g. public mailing lists.
* syz-cluster: report series/sessions via APIAleksandr Nogikh2025-02-142-2/+2
| | | | | | | | | | | | | | | | | | | | | | In the previous version of the code, series-tracker was directly pushing patch series into the DB and the controller auto-created fuzzing sessions. Mediate these via the controller API instead. Instead of creating Session objects on the fly, pre-create them and let processor take them one by one. The approach has multiple benefits: 1) The same API might be used for the patch series sources other than LKML. 2) If the existence of Session objects is not a sign that we have started working on it, it allows for a more precise status display (not created/waiting/running/finished). 3) We could manually push older patch series and manually trigger fuzzing sessions to experimentally measure the bug detection rates. 4) The controller tests could be organized only by relying on the API offered by the component.
* syz-cluster: fuzz for 3 hoursAleksandr Nogikh2025-02-061-2/+2
| | | | 2h session is too short (at least for now).
* syz-cluster: set resource limitsAleksandr Nogikh2025-02-043-6/+25
| | | | | It will be important once we deploy to GKE. For now, let's set just some limits, we'll adjust them over time.
* syz-cluster/workflow/fuzz-step: use deadline only for fuzzingAleksandr Nogikh2025-02-041-4/+8
| | | | | | We cannot use the single context with a deadline for all processing because it does not let us report the final status after finishing fuzzing.
* workflow/build-step: simplify DockerfileAleksandr Nogikh2025-02-041-49/+8
| | | | | Use the syzbot container as the base. Use ADD instead of wget.
* syz-cluster: store session test logsAleksandr Nogikh2025-02-041-18/+27
| | | | Record the logs from the build and fuzzing steps.
* syz-cluster: integrate with syz-diffAleksandr Nogikh2025-02-046-5/+319
| | | | Run differential fuzzing as a workflow step.
* syz-cluster: remove mentions of vendorAleksandr Nogikh2025-01-271-1/+1
|
* syz-cluster: explicitly set the skip reasonAleksandr Nogikh2025-01-271-6/+16
| | | | | | | | It lets immediately distinguish the series that were actually processed from the series that were skipped early on. By storing a string, we also make it apparent why exactly the series was skipped.
* syz-cluster: perform a patched kernel boot testAleksandr Nogikh2025-01-222-5/+19
| | | | Report the findings only for the boot test of the patched kernel.
* syz-cluster: add a boot testAleksandr Nogikh2025-01-224-0/+206
| | | | Run a smoke test on the base kernel build and report back the results.
* syz-cluster: remove submit-testAleksandr Nogikh2025-01-224-65/+65
| | | | | | | It's not necessary - submit the results from the individual steps instead. Report patched kernel build failures as findings.
* syz-cluster: initial codeAleksandr Nogikh2025-01-2210-0/+643
The basic code of a K8S-based cluster that: * Aggregates new LKML patch series. * Determines the kernel trees to apply them to. * Builds the basic and the patched kernel. * Displays the results on a web dashboard. This is a very rudimentary version with a lot of TODOs that provides a skeleton for further work. The project makes use of Argo workflows and Spanner DB. Bootstrap is used for the web interface. Overall structure: * syz-cluster/dashboard: a web dashboard listing patch series and their test results. * syz-cluster/series-tracker: polls Lore archives and submits the new patch series to the DB. * syz-cluster/controller: schedules workflows and provides API for them. * syz-cluster/kernel-disk: a cron job that keeps a kernel checkout up to date. * syz-cluster/workflow/*: workflow steps. For the DB structure see syz-cluster/pkg/db/migrations/*.