aboutsummaryrefslogtreecommitdiffstats
path: root/syz-cluster/workflow/triage-step/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'syz-cluster/workflow/triage-step/main.go')
-rw-r--r--syz-cluster/workflow/triage-step/main.go41
1 files changed, 17 insertions, 24 deletions
diff --git a/syz-cluster/workflow/triage-step/main.go b/syz-cluster/workflow/triage-step/main.go
index ff2b51d26..042409f97 100644
--- a/syz-cluster/workflow/triage-step/main.go
+++ b/syz-cluster/workflow/triage-step/main.go
@@ -79,12 +79,6 @@ func (triager *seriesTriager) GetVerdict(ctx context.Context, sessionID string)
if err != nil {
return nil, fmt.Errorf("failed to query trees: %w", err)
}
- selectedTrees := triage.SelectTrees(series, treesResp.Trees)
- if len(selectedTrees) == 0 {
- return &api.TriageResult{
- SkipReason: "no suitable base kernel trees found",
- }, nil
- }
fuzzConfigs := triage.MergeKernelFuzzConfigs(triage.SelectFuzzConfigs(series, treesResp.FuzzTargets))
if len(fuzzConfigs) == 0 {
return &api.TriageResult{
@@ -93,7 +87,7 @@ func (triager *seriesTriager) GetVerdict(ctx context.Context, sessionID string)
}
ret := &api.TriageResult{}
for _, campaign := range fuzzConfigs {
- fuzzTask, err := triager.prepareFuzzingTask(ctx, series, selectedTrees, campaign)
+ fuzzTask, err := triager.prepareFuzzingTask(ctx, series, treesResp.Trees, campaign)
var skipErr *SkipTriageError
if errors.As(err, &skipErr) {
ret.SkipReason = skipErr.Reason.Error()
@@ -123,7 +117,7 @@ func (triager *seriesTriager) prepareFuzzingTask(ctx context.Context, series *ap
}
}
if result != nil {
- triager.Log("continuing with %+v", result)
+ triager.Log("continuing with %v in %v", result.Commit, result.Tree.Name)
base := api.BuildRequest{
TreeName: result.Tree.Name,
TreeURL: result.Tree.URL,
@@ -158,31 +152,30 @@ func (triager *seriesTriager) selectFromBlobs(series *api.Series, trees []*api.T
diff = append(diff, patch.Body...)
diff = append(diff, '\n')
}
- base, err := triager.ops.BaseForDiff(diff, triager.DebugTracer)
+ baseList, err := triager.ops.BaseForDiff(diff, triager.DebugTracer)
if err != nil {
return nil, err
- } else if base == nil {
+ }
+ tree, commit := triage.FromBaseCommits(series, baseList, trees)
+ if tree == nil {
triager.Log("no candidate base commit is found")
return nil, nil
}
- for _, branch := range base.Branches {
- tree := triage.TreeFromBranch(trees, branch)
- if tree != nil {
- return &SelectResult{
- Tree: tree,
- Commit: base.Hash,
- Arch: fuzzArch,
- }, nil
- }
- }
- triager.Log("cannot identify the tree from %q", base.Branches)
- return nil, nil
+ return &SelectResult{
+ Tree: tree,
+ Commit: commit,
+ Arch: fuzzArch,
+ }, nil
}
func (triager *seriesTriager) selectFromList(ctx context.Context, series *api.Series, trees []*api.Tree,
target *triage.MergedFuzzConfig) (*SelectResult, error) {
- skipErr := SkipError("empty tree list")
- for _, tree := range trees {
+ selectedTrees := triage.SelectTrees(series, trees)
+ if len(selectedTrees) == 0 {
+ return nil, SkipError("no suitable base kernel trees found")
+ }
+ var skipErr error
+ for _, tree := range selectedTrees {
triager.Log("considering tree %q", tree.Name)
lastBuild, err := triager.client.LastBuild(ctx, &api.LastBuildReq{
Arch: fuzzArch,