diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2019-05-11 12:57:07 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2019-05-12 11:38:18 +0200 |
| commit | 39449875b60fb5a6e5ab53a1b2231ab6b29506a7 (patch) | |
| tree | 8e695846dbf7b29b5c82a472209d8122f943919a | |
| parent | c017728b48d0996df3928156621be26383186a27 (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.go | 2 | ||||
| -rw-r--r-- | pkg/instance/instance.go | 13 | ||||
| -rw-r--r-- | syz-ci/jobs.go | 13 | ||||
| -rw-r--r-- | tools/syz-testbuild/testbuild.go | 2 |
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) |
