From d922ca7efda29b23dfb85abe37aee1641c4fbe05 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Wed, 19 Jul 2023 14:14:10 +0200 Subject: syz-ci: specify per-manager bisection backports It might be the case that the kernels that are being fuzzed on syz-ci require their own backports to build/test older revisions during bisection. Let users specify it in the syz-ci config. --- pkg/bisect/bisect.go | 7 ++++++- pkg/vcs/linux.go | 3 ++- pkg/vcs/testos.go | 1 + pkg/vcs/vcs.go | 3 ++- 4 files changed, 11 insertions(+), 3 deletions(-) (limited to 'pkg') diff --git a/pkg/bisect/bisect.go b/pkg/bisect/bisect.go index dab1cb27c..cd20cca07 100644 --- a/pkg/bisect/bisect.go +++ b/pkg/bisect/bisect.go @@ -58,6 +58,8 @@ type KernelConfig struct { // this minimized one. BaselineConfig []byte Userspace string + // Extra commits to cherry pick to older kernel revisions. + Backports []vcs.BackportCommit } type SyzkallerConfig struct { @@ -566,7 +568,10 @@ func (env *env) build() (*vcs.Commit, string, error) { } bisectEnv, err := env.bisecter.EnvForCommit( - env.cfg.DefaultCompiler, env.cfg.CompilerType, env.cfg.BinDir, current.Hash, env.kernelConfig) + env.cfg.DefaultCompiler, env.cfg.CompilerType, + env.cfg.BinDir, current.Hash, env.kernelConfig, + env.cfg.Kernel.Backports, + ) if err != nil { return current, "", err } diff --git a/pkg/vcs/linux.go b/pkg/vcs/linux.go index 16e1c79fa..589c300b8 100644 --- a/pkg/vcs/linux.go +++ b/pkg/vcs/linux.go @@ -139,6 +139,7 @@ func gitReleaseTagToInt(tag string, includeRC bool) uint64 { func (ctx *linux) EnvForCommit( defaultCompiler, compilerType, binDir, commit string, kernelConfig []byte, + backports []BackportCommit, ) (*BisectEnv, error) { tagList, err := ctx.previousReleaseTags(commit, true, false, false) if err != nil { @@ -167,7 +168,7 @@ func (ctx *linux) EnvForCommit( Compiler: compiler, KernelConfig: cf.Serialize(), } - err = linuxFixBackports(ctx.git) + err = linuxFixBackports(ctx.git, backports...) if err != nil { return nil, fmt.Errorf("failed to cherry pick fixes: %w", err) } diff --git a/pkg/vcs/testos.go b/pkg/vcs/testos.go index cfc34cc23..68d9eeccd 100644 --- a/pkg/vcs/testos.go +++ b/pkg/vcs/testos.go @@ -29,6 +29,7 @@ func (ctx *testos) PreviousReleaseTags(commit, compilerType string) ([]string, e func (ctx *testos) EnvForCommit( defaultCompiler, compilerType, binDir, commit string, kernelConfig []byte, + backports []BackportCommit, ) (*BisectEnv, error) { return &BisectEnv{KernelConfig: kernelConfig}, nil } diff --git a/pkg/vcs/vcs.go b/pkg/vcs/vcs.go index 9515692ea..ae2b34174 100644 --- a/pkg/vcs/vcs.go +++ b/pkg/vcs/vcs.go @@ -93,7 +93,8 @@ type Bisecter interface { IsRelease(commit string) (bool, error) - EnvForCommit(defaultCompiler, compilerType, binDir, commit string, kernelConfig []byte) (*BisectEnv, error) + EnvForCommit(defaultCompiler, compilerType, binDir, commit string, + kernelConfig []byte, backports []BackportCommit) (*BisectEnv, error) } type ConfigMinimizer interface { -- cgit mrf-deployment