@@ -113,6 +113,24 @@ func (triager *seriesTriager) GetVerdict(ctx context.Context, sessionID string)
113113func (triager * seriesTriager ) prepareFuzzingTask (ctx context.Context , series * api.Series , trees []* api.Tree ,
114114 target * triage.MergedFuzzConfig ) (* api.FuzzTask , error ) {
115115 var skipErr error
116+ selector := triage .NewCommitSelector (triager .ops , triager .DebugTracer )
117+
118+ // First try to use hints from the series description.
119+ if series .BaseCommitHint != "" {
120+ for _ , tree := range trees {
121+ triager .Log ("considering tree %q with a hint" , tree .Name )
122+ result , err := selector .TrySelectWithHint (series )
123+ if err != nil {
124+ return nil , fmt .Errorf ("failed to run TrySelectWithHint for %q: %w" , tree .Name , err )
125+ }
126+ if result .Commit != "" {
127+ triager .Log ("selected base commit with hint: %s" , result .Commit )
128+ return buildFuzzTask (series , tree , target , result .Commit ), nil
129+ }
130+ triager .Log ("failed to find a base commit with hint for %q: %s" , tree .Name , result .Reason )
131+ }
132+ }
133+
116134 for _ , tree := range trees {
117135 triager .Log ("considering tree %q" , tree .Name )
118136 arch := "amd64"
@@ -127,7 +145,6 @@ func (triager *seriesTriager) prepareFuzzingTask(ctx context.Context, series *ap
127145 return nil , fmt .Errorf ("failed to query the last build for %q: %w" , tree .Name , err )
128146 }
129147 triager .Log ("%q's last build: %q" , tree .Name , lastBuild )
130- selector := triage .NewCommitSelector (triager .ops , triager .DebugTracer )
131148 result , err := selector .Select (series , tree , lastBuild )
132149 if err != nil {
133150 // TODO: the workflow step must be retried.
@@ -141,24 +158,29 @@ func (triager *seriesTriager) prepareFuzzingTask(ctx context.Context, series *ap
141158 continue
142159 }
143160 triager .Log ("selected base commit: %s" , result .Commit )
144- base := api.BuildRequest {
145- TreeName : tree .Name ,
146- TreeURL : tree .URL ,
147- ConfigName : target .KernelConfig ,
148- CommitHash : result .Commit ,
149- Arch : arch ,
150- }
151- fuzz := & api.FuzzTask {
152- Base : base ,
153- Patched : base ,
154- FuzzConfig : * target .FuzzConfig ,
155- }
156- fuzz .Patched .SeriesID = series .ID
157- return fuzz , nil
161+ return buildFuzzTask (series , tree , target , result .Commit ), nil
158162 }
159163 return nil , skipErr
160164}
161165
166+ func buildFuzzTask (series * api.Series , tree * api.Tree , target * triage.MergedFuzzConfig , commit string ) * api.FuzzTask {
167+ arch := "amd64"
168+ base := api.BuildRequest {
169+ TreeName : tree .Name ,
170+ TreeURL : tree .URL ,
171+ ConfigName : target .KernelConfig ,
172+ CommitHash : commit ,
173+ Arch : arch ,
174+ }
175+ fuzz := & api.FuzzTask {
176+ Base : base ,
177+ Patched : base ,
178+ FuzzConfig : * target .FuzzConfig ,
179+ }
180+ fuzz .Patched .SeriesID = series .ID
181+ return fuzz
182+ }
183+
162184type SkipTriageError struct {
163185 Reason error
164186}
0 commit comments