aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSpace Meyer <spm@google.com>2023-01-09 13:51:24 +0100
committerSpace Meyer <git@the-space.agency>2023-01-09 14:25:36 +0100
commit48bc529a18de54dddab161d995fc3abd85a670a8 (patch)
treef6e8c2b6483271922d388aa7e53b90ae9ae4fe9c
parentdf3838a1b408f22e5df7cd986138d6ec5768369d (diff)
pkg/instance: move BuildKernel() args to struct
-rw-r--r--pkg/bisect/bisect.go11
-rw-r--r--pkg/bisect/bisect_test.go7
-rw-r--r--pkg/instance/instance.go29
-rw-r--r--syz-ci/jobs.go11
-rw-r--r--tools/syz-testbuild/testbuild.go11
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)