diff options
| author | Space Meyer <spm@google.com> | 2023-01-09 13:51:24 +0100 |
|---|---|---|
| committer | Space Meyer <git@the-space.agency> | 2023-01-09 14:25:36 +0100 |
| commit | 48bc529a18de54dddab161d995fc3abd85a670a8 (patch) | |
| tree | f6e8c2b6483271922d388aa7e53b90ae9ae4fe9c | |
| parent | df3838a1b408f22e5df7cd986138d6ec5768369d (diff) | |
pkg/instance: move BuildKernel() args to struct
| -rw-r--r-- | pkg/bisect/bisect.go | 11 | ||||
| -rw-r--r-- | pkg/bisect/bisect_test.go | 7 | ||||
| -rw-r--r-- | pkg/instance/instance.go | 29 | ||||
| -rw-r--r-- | syz-ci/jobs.go | 11 | ||||
| -rw-r--r-- | tools/syz-testbuild/testbuild.go | 11 |
5 files changed, 49 insertions, 20 deletions
diff --git a/pkg/bisect/bisect.go b/pkg/bisect/bisect.go index ed961f537..28e8c56d0 100644 --- a/pkg/bisect/bisect.go +++ b/pkg/bisect/bisect.go @@ -479,8 +479,15 @@ func (env *env) build() (*vcs.Commit, string, error) { return current, "", fmt.Errorf("kernel clean failed: %v", err) } kern := &env.cfg.Kernel - _, imageDetails, err := env.inst.BuildKernel(bisectEnv.Compiler, env.cfg.Linker, env.cfg.Ccache, kern.Userspace, - kern.Cmdline, kern.Sysctl, bisectEnv.KernelConfig) + _, imageDetails, err := env.inst.BuildKernel(&instance.BuildKernelConfig{ + CompilerBin: bisectEnv.Compiler, + LinkerBin: env.cfg.Linker, + CcacheBin: env.cfg.Ccache, + UserspaceDir: kern.Userspace, + CmdlineFile: kern.Cmdline, + SysctlFile: kern.Sysctl, + KernelConfig: bisectEnv.KernelConfig, + }) if imageDetails.CompilerID != "" { env.log("compiler: %v", imageDetails.CompilerID) } diff --git a/pkg/bisect/bisect_test.go b/pkg/bisect/bisect_test.go index 79bb70400..2d613759b 100644 --- a/pkg/bisect/bisect_test.go +++ b/pkg/bisect/bisect_test.go @@ -32,16 +32,15 @@ func (env *testEnv) BuildSyzkaller(repo, commit string) (string, error) { return "", nil } -func (env *testEnv) BuildKernel(compilerBin, linker, cCache, userspaceDir, cmdlineFile, sysctlFile string, - kernelConfig []byte) (string, build.ImageDetails, error) { +func (env *testEnv) BuildKernel(buildCfg *instance.BuildKernelConfig) (string, build.ImageDetails, error) { commit := env.headCommit() - configHash := hash.String(kernelConfig) + configHash := hash.String(buildCfg.KernelConfig) details := build.ImageDetails{} details.Signature = fmt.Sprintf("%v-%v", commit, configHash) if commit >= env.test.sameBinaryStart && commit <= env.test.sameBinaryEnd { details.Signature = "same-sign-" + configHash } - env.config = string(kernelConfig) + env.config = string(buildCfg.KernelConfig) if env.config == "baseline-fails" { return "", details, fmt.Errorf("failure") } diff --git a/pkg/instance/instance.go b/pkg/instance/instance.go index b697ab926..b393991d0 100644 --- a/pkg/instance/instance.go +++ b/pkg/instance/instance.go @@ -29,7 +29,7 @@ import ( type Env interface { BuildSyzkaller(string, string) (string, error) - BuildKernel(string, string, string, string, string, string, []byte) (string, build.ImageDetails, error) + BuildKernel(*BuildKernelConfig) (string, build.ImageDetails, error) Test(numVMs int, reproSyz, reproOpts, reproC []byte) ([]EnvTestResult, error) } @@ -38,6 +38,16 @@ type env struct { optionalFlags bool } +type BuildKernelConfig struct { + CompilerBin string + LinkerBin string + CcacheBin string + UserspaceDir string + CmdlineFile string + SysctlFile string + KernelConfig []byte +} + func NewEnv(cfg *mgrconfig.Config) (Env, error) { if !vm.AllowsOvercommit(cfg.Type) { return nil, fmt.Errorf("test instances are not supported for %v VMs", cfg.Type) @@ -114,8 +124,7 @@ func (env *env) BuildSyzkaller(repoURL, commit string) (string, error) { return buildLog, nil } -func (env *env) BuildKernel(compilerBin, linkerBin, ccacheBin, userspaceDir, cmdlineFile, sysctlFile string, - kernelConfig []byte) ( +func (env *env) BuildKernel(buildCfg *BuildKernelConfig) ( string, build.ImageDetails, error) { imageDir := filepath.Join(env.cfg.Workdir, "image") params := build.Params{ @@ -124,13 +133,13 @@ func (env *env) BuildKernel(compilerBin, linkerBin, ccacheBin, userspaceDir, cmd VMType: env.cfg.Type, KernelDir: env.cfg.KernelSrc, OutputDir: imageDir, - Compiler: compilerBin, - Linker: linkerBin, - Ccache: ccacheBin, - UserspaceDir: userspaceDir, - CmdlineFile: cmdlineFile, - SysctlFile: sysctlFile, - Config: kernelConfig, + Compiler: buildCfg.CompilerBin, + Linker: buildCfg.LinkerBin, + Ccache: buildCfg.CcacheBin, + UserspaceDir: buildCfg.UserspaceDir, + CmdlineFile: buildCfg.CmdlineFile, + SysctlFile: buildCfg.SysctlFile, + Config: buildCfg.KernelConfig, } details, err := build.Image(params) if err != nil { diff --git a/syz-ci/jobs.go b/syz-ci/jobs.go index 8a157ed75..ed999a5ff 100644 --- a/syz-ci/jobs.go +++ b/syz-ci/jobs.go @@ -553,8 +553,15 @@ func (jp *JobProcessor) testPatch(job *Job, mgrcfg *mgrconfig.Config) error { []byte("# CONFIG_DEBUG_INFO_BTF is not set"), -1) log.Logf(0, "job: building kernel...") - kernelConfig, details, err := env.BuildKernel(mgr.mgrcfg.Compiler, mgr.mgrcfg.Linker, mgr.mgrcfg.Ccache, - mgr.mgrcfg.Userspace, mgr.mgrcfg.KernelCmdline, mgr.mgrcfg.KernelSysctl, req.KernelConfig) + kernelConfig, details, err := env.BuildKernel(&instance.BuildKernelConfig{ + CompilerBin: mgr.mgrcfg.Compiler, + LinkerBin: mgr.mgrcfg.Linker, + CcacheBin: mgr.mgrcfg.Ccache, + UserspaceDir: mgr.mgrcfg.Userspace, + CmdlineFile: mgr.mgrcfg.KernelCmdline, + SysctlFile: mgr.mgrcfg.KernelSysctl, + KernelConfig: req.KernelConfig, + }) resp.Build.CompilerID = details.CompilerID if err != nil { return err diff --git a/tools/syz-testbuild/testbuild.go b/tools/syz-testbuild/testbuild.go index 29c24e010..4ce4a3616 100644 --- a/tools/syz-testbuild/testbuild.go +++ b/tools/syz-testbuild/testbuild.go @@ -134,8 +134,15 @@ func test(repo vcs.Repo, bisecter vcs.Bisecter, kernelConfig []byte, env instanc if err := build.Clean(*flagOS, *flagArch, vmType, *flagKernelSrc); err != nil { tool.Fail(err) } - _, _, err = env.BuildKernel(bisectEnv.Compiler, linker, ccache, *flagUserspace, - *flagKernelCmdline, *flagKernelSysctl, bisectEnv.KernelConfig) + _, _, err = env.BuildKernel(&instance.BuildKernelConfig{ + CompilerBin: bisectEnv.Compiler, + LinkerBin: linker, + CcacheBin: ccache, + UserspaceDir: *flagUserspace, + CmdlineFile: *flagKernelCmdline, + SysctlFile: *flagKernelSysctl, + KernelConfig: bisectEnv.KernelConfig, + }) if err != nil { if verr, ok := err.(*osutil.VerboseError); ok { log.Printf("BUILD BROKEN: %v", verr.Title) |
