aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2019-05-11 12:57:07 +0200
committerDmitry Vyukov <dvyukov@google.com>2019-05-12 11:38:18 +0200
commit39449875b60fb5a6e5ab53a1b2231ab6b29506a7 (patch)
tree8e695846dbf7b29b5c82a472209d8122f943919a
parentc017728b48d0996df3928156621be26383186a27 (diff)
syz-ci: don't assume kernel config is called .config
.config is linux-ism. We have a convention that kernel config is copied to kernel.config file. Use it.
-rw-r--r--pkg/bisect/bisect.go2
-rw-r--r--pkg/instance/instance.go13
-rw-r--r--syz-ci/jobs.go13
-rw-r--r--tools/syz-testbuild/testbuild.go2
4 files changed, 20 insertions, 10 deletions
diff --git a/pkg/bisect/bisect.go b/pkg/bisect/bisect.go
index d3ff05da4..78cb58bd4 100644
--- a/pkg/bisect/bisect.go
+++ b/pkg/bisect/bisect.go
@@ -261,7 +261,7 @@ func (env *env) test() (vcs.BisectResult, *vcs.Commit, *report.Report, error) {
cfg.Manager.Type, cfg.Manager.KernelSrc); err != nil {
return 0, nil, nil, fmt.Errorf("kernel clean failed: %v", err)
}
- err = env.inst.BuildKernel(compiler, cfg.Kernel.Userspace,
+ _, err = env.inst.BuildKernel(compiler, cfg.Kernel.Userspace,
cfg.Kernel.Cmdline, cfg.Kernel.Sysctl, bisectEnv.KernelConfig)
env.buildTime += time.Since(buildStart)
if err != nil {
diff --git a/pkg/instance/instance.go b/pkg/instance/instance.go
index 30d0cbe4b..a84e9c89c 100644
--- a/pkg/instance/instance.go
+++ b/pkg/instance/instance.go
@@ -82,15 +82,22 @@ func (env *Env) BuildSyzkaller(repo, commit string) error {
return nil
}
-func (env *Env) BuildKernel(compilerBin, userspaceDir, cmdlineFile, sysctlFile string, kernelConfig []byte) error {
+func (env *Env) BuildKernel(compilerBin, userspaceDir, cmdlineFile, sysctlFile string, kernelConfig []byte) (string, error) {
cfg := env.cfg
imageDir := filepath.Join(cfg.Workdir, "image")
if err := build.Image(cfg.TargetOS, cfg.TargetVMArch, cfg.Type,
cfg.KernelSrc, imageDir, compilerBin, userspaceDir,
cmdlineFile, sysctlFile, kernelConfig); err != nil {
- return err
+ return "", err
+ }
+ if err := SetConfigImage(cfg, imageDir, true); err != nil {
+ return "", err
+ }
+ kernelConfigFile := filepath.Join(imageDir, "kernel.config")
+ if !osutil.IsExist(kernelConfigFile) {
+ kernelConfigFile = ""
}
- return SetConfigImage(cfg, imageDir, true)
+ return kernelConfigFile, nil
}
func SetConfigImage(cfg *mgrconfig.Config, imageDir string, reliable bool) error {
diff --git a/syz-ci/jobs.go b/syz-ci/jobs.go
index 3f1bc149b..7e755f8a2 100644
--- a/syz-ci/jobs.go
+++ b/syz-ci/jobs.go
@@ -469,13 +469,16 @@ func (jp *JobProcessor) testPatch(job *Job, mgrcfg *mgrconfig.Config) error {
}
log.Logf(0, "job: building kernel...")
- if err := env.BuildKernel(mgr.mgrcfg.Compiler, mgr.mgrcfg.Userspace, mgr.mgrcfg.KernelCmdline,
- mgr.mgrcfg.KernelSysctl, req.KernelConfig); err != nil {
+ kernelConfig, err := env.BuildKernel(mgr.mgrcfg.Compiler, mgr.mgrcfg.Userspace, mgr.mgrcfg.KernelCmdline,
+ mgr.mgrcfg.KernelSysctl, req.KernelConfig)
+ if err != nil {
return err
}
- resp.Build.KernelConfig, err = ioutil.ReadFile(filepath.Join(mgrcfg.KernelSrc, ".config"))
- if err != nil {
- return fmt.Errorf("failed to read config file: %v", err)
+ if kernelConfig != "" {
+ resp.Build.KernelConfig, err = ioutil.ReadFile(kernelConfig)
+ if err != nil {
+ return fmt.Errorf("failed to read config file: %v", err)
+ }
}
log.Logf(0, "job: testing...")
results, err := env.Test(3, req.ReproSyz, req.ReproOpts, req.ReproC)
diff --git a/tools/syz-testbuild/testbuild.go b/tools/syz-testbuild/testbuild.go
index bc7a3d4e6..81a3466e4 100644
--- a/tools/syz-testbuild/testbuild.go
+++ b/tools/syz-testbuild/testbuild.go
@@ -130,7 +130,7 @@ func test(repo vcs.Repo, bisecter vcs.Bisecter, kernelConfig []byte, env *instan
if err := build.Clean(*flagOS, *flagArch, vmType, *flagKernelSrc); err != nil {
fail(err)
}
- err = env.BuildKernel(compiler, *flagUserspace, *flagKernelCmdline, *flagKernelSysctl, bisectEnv.KernelConfig)
+ _, err = env.BuildKernel(compiler, *flagUserspace, *flagKernelCmdline, *flagKernelSysctl, bisectEnv.KernelConfig)
if err != nil {
if verr, ok := err.(*osutil.VerboseError); ok {
log.Printf("BUILD BROKEN: %v", verr.Title)