diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2023-07-19 14:14:10 +0200 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2023-07-20 07:33:29 +0000 |
| commit | d922ca7efda29b23dfb85abe37aee1641c4fbe05 (patch) | |
| tree | 7c7d78500ef5536f36717c45de2e0adeb1a62a33 /pkg | |
| parent | 37668e463d42d68846539559443ec458c9b05acb (diff) | |
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.
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/bisect/bisect.go | 7 | ||||
| -rw-r--r-- | pkg/vcs/linux.go | 3 | ||||
| -rw-r--r-- | pkg/vcs/testos.go | 1 | ||||
| -rw-r--r-- | pkg/vcs/vcs.go | 3 |
4 files changed, 11 insertions, 3 deletions
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 { |
