aboutsummaryrefslogtreecommitdiffstats
path: root/syz-cluster/pkg
Commit message (Collapse)AuthorAgeFilesLines
* syz-cluster: prioritize blob-based base commitsAleksandr Nogikh2026-01-135-14/+128
| | | | | | | | | | | | | 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.
* pkg/vcs: return multiple base commit candidatesAleksandr Nogikh2026-01-131-1/+5
| | | | | Return the commits that represent unique sets of branches. Sort the list topologically, breaking ties by commit date.
* syz-cluster: guess base patch by blob hashes from the diffAleksandr Nogikh2026-01-094-2/+21
| | | | | 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: poll the media treeAleksandr Nogikh2026-01-091-0/+6
| | | | | | Poll the tree and consider it during patch series triage. Note that the media lists are not monitored as of now, so the tree will only be used when we receive media patches through other mailing lists.
* syz-cluster: show series versions in the dashboardPimyn Girgis2026-01-081-0/+11
| | | | | | Display a list of other versions of the same series on the series details page. Fetch all series sharing the same title and render them in a new "Series Versions" table, allowing navigation between different versions of a patch series.
* syz-cluster: add tests for series and patch name filteringPimyn Girgis2026-01-081-0/+88
| | | | Adds unit tests for the series and patch name filtering functionality in the database repository.
* syz-cluster: add filtering by series and patch namePimyn Girgis2026-01-083-12/+40
| | | | | Update SeriesFilter in pkg/db to include PatchName and SeriesName fields, implement the SQL logic to filter by these fields case-insensitively, and expose these filters in the dashboard UI.
* all: remove unused nolint directivesDmitry Vyukov2026-01-025-7/+0
|
* syz-cluster/pkg/db: make it possible to use emulator in dashboard testsDmitry Vyukov2025-12-311-24/+35
|
* syz-cluster/pkg/db: fix bunch of bugs in emulator managementDmitry Vyukov2025-12-291-56/+55
| | | | | | | | | | | | | | | | | | | There is a bunch of bugs now: 1. The emulator binary is killed when the first test finished, before subsequent tests start. 2. The child emulator binary (the actual emulator "emulator_main") is leaked. These subprocesses are never killed and live past tests. (that's why we get away with the first problem) 3. Errors are not handled well if emulator setup fails. We leave spannerHost empty and subsequent tests ignore the original error (since only the first test executes setupSpannerOnce). 4. NewTransientDB duplicates a bunch of work that needs to happen only once (in particular os.Setenv("SPANNER_EMULATOR_HOST")). Fix all of that. Support spanner emulator distributed as part of google-cloud-sdk while we are here, so that tests can be run locally.
* syz-cluster/pkg/db: don't drop test databasesDmitry Vyukov2025-12-291-17/+2
| | | | | | | | | | | | | | | | | | | | | | This is not necessary, makes things slower, than is not working anyway: === RUN TestSeriesRepositoryUpdate spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled --- PASS: TestSeriesRepositoryUpdate (0.07s) === RUN TestSeriesInsertSession spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled --- PASS: TestSeriesInsertSession (0.11s) === RUN TestQueryWaitingSessions spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled --- PASS: TestQueryWaitingSessions (0.12s) === RUN TestSessionTestRepository spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled --- PASS: TestSessionTestRepository (0.09s) === RUN TestMigrations spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled --- PASS: TestMigrations (0.15s) === RUN TestStatsSQLs spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled
* all: use any instead of interface{}Dmitry Vyukov2025-12-2212-37/+37
| | | | Any is the preferred over interface{} now in Go.
* syz-cluster: basic support for finding invalidationAleksandr Nogikh2025-12-0115-16/+138
| | | | | | Add some initial #syz invalid support to syz-cluster. For now, mark all findings as invalid and don't display that such series have findings on the web dashboard.
* syz-cluster: log HEAD commit date during triageAleksandr Nogikh2025-11-281-1/+1
| | | | | | Currently triage logs look a bit confusing since for some commits they include author date and for other commit date. Use commit date everywhere.
* syz-cluster: don't use custom git tree tagsAleksandr Nogikh2025-11-262-5/+5
| | | | | | Since remote branches are already mapped to "tree/name" local branches, there's no need for the special "tree-HEAD" tag anymore. Simplify the code.
* syz-cluster: poll drm treeAleksandr Nogikh2025-11-121-0/+6
| | | | | | | | Add the drm tree to the list of trees considered during patch series triage. Currently we sometimes hit false positives becase of not considering this tree, see e.g. https://ci.syzbot.org/series/1ecba15f-79c3-40ff-99c6-8f3540bddf65
* syz-cluster: checkout the mm-new treeAleksandr Nogikh2025-10-201-0/+6
| | | | | | A number of mm patches do not apply neither on top of torvalds, nor on top of linux-next. The mm/mm-new branch seems to be a more reliable base.
* syz-cluster: display the reports count graphAleksandr Nogikh2025-10-172-0/+16
| | | | | | Apart from just the total number of findings (some of which may end up being non-reported), also display specifically the number of reports that have found their way to the mailing lists.
* syz-cluster: set fuzzing_vmsAleksandr Nogikh2025-10-078-0/+8
| | | | Otherwise reproductions sometimes take almost all VMs.
* syz-cluster: rewrite fuzz config generationAleksandr Nogikh2025-10-0721-63/+1761
| | | | | | | | 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: run KMSAN fuzzing in parallel to KASANAleksandr Nogikh2025-10-071-2/+2
| | | | There's no reason to do first one and then another.
* syz-cluster: support multiple campaigns per fuzz targetAleksandr Nogikh2025-10-075-68/+92
| | | | | | | | 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: prefix fuzzing-related stepsAleksandr Nogikh2025-10-012-4/+14
| | | | | 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-011-0/+2
| | | | | 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-011-14/+16
| | | | | | 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-012-2/+3
| | | | | Adjut the workflow template and the API to run multiple fuzzing campaigns as a part of single patch series processing.
* syz-cluster: reorder workflow stepsAleksandr Nogikh2025-10-011-18/+22
| | | | | | | | 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.
* syz-cluster: fetch linux-nextAleksandr Nogikh2025-09-031-1/+7
| | | | | | | | There are a number of patch series that don't apply to torvalds, but do apply to linux-next. Since we don't fetch all maintainer trees, use linux-next as the last resort.
* syz-cluster: add kvm/next treeAleksandr Nogikh2025-08-291-0/+6
| | | | | Some series don't apply to torvalds, see e.g. https://ci.syzbot.org/series/f429573e-7862-4f1e-97dd-3215a235b1d3
* syz-cluster: fuzz block patch seriesAleksandr Nogikh2025-08-261-0/+1
|
* syz-cluster: define a separate fs configAleksandr Nogikh2025-08-211-0/+13
| | | | | When fuzzing fs-related series, enable fs syscalls and use the fs corpus.
* syz-cluster: use test context in NewTransientDBAleksandr Nogikh2025-08-211-1/+1
| | | | This is a better choice than context.Background().
* syz-cluster: collect information about base crashesAleksandr Nogikh2025-08-219-10/+272
| | | | Track base crashes for (commit hash, config, arch) tuples.
* syz-cluster: use correct failed session step statusAleksandr Nogikh2025-08-201-1/+1
| | | | It is the session steps with the "error" status that must be counted.
* syz-cluster: display the session processing timeAleksandr Nogikh2025-08-201-0/+7
|
* syz-cluster: prefix Tested-By in the email reportsAleksandr Nogikh2025-08-205-5/+5
| | | | | | Add some leading whitespaces to the suggested Tested-By tag, otherwise it must be misinterpreted by other kernel tools, see: https://lore.kernel.org/all/20250819175842.7edaf8a5@kernel.org/
* syz-cluster: improve the status distribution graphAleksandr Nogikh2025-08-191-11/+32
| | | | Display the share of sessions that have failed and skipped tests.
* syz-cluster: skip fuzzing if binaries are the sameAleksandr Nogikh2025-08-193-0/+7
| | | | | | | | 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: fix stats display for non finished sessionsAleksandr Nogikh2025-08-182-12/+19
| | | | | | | We could not generate the stats page when there were findings for a not yet finished session. Fix it and adjust the tests.
* syz-cluster: display statisticsAleksandr Nogikh2025-08-142-0/+125
| | | | | | | Add a web dashboard page with the main statistics concerning patch series fuzzing. Improve the navigation bar on top of the page.
* syz-cluster: fuzz new mm patch seriesAleksandr Nogikh2025-08-121-0/+10
|
* syz-cluster: skip coverage checks for some fuzz targetsAleksandr Nogikh2025-08-122-0/+4
| | | | | | | | 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-124-26/+41
| | | | | | | | 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.
* pkg: move gcpsecret to a separate packageAleksandr Nogikh2025-08-111-3/+3
| | | | | It simplifies the dependency tree and fixes a build error for the send-test-email container.
* syz-cluster: support branch checkout in build-stepAleksandr Nogikh2025-08-081-1/+9
| | | | | | | 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: fuzz linux-wireless patch seriesAleksandr Nogikh2025-08-061-2/+6
|
* syz-cluster: fuzz io-uring patch seriesAleksandr Nogikh2025-08-061-0/+6
| | | | Use a custom set of enabled syscalls.
* syz-cluster: add a kvm configAleksandr Nogikh2025-07-311-0/+6
| | | | | Add a config to fuzz kvm patches. Listen on the kvm mailing list.
* syz-cluster: split tree and fuzz config selectionAleksandr Nogikh2025-07-317-91/+155
| | | | | | | | 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: refactor generic Spanner helpersAleksandr Nogikh2025-07-298-115/+65
| | | | | Extract the common "Query - ReadOne - close iterator" pattern into a separate method.