From 58d094047fb1e61df8402ef854bd3bfb97826d6f Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Mon, 13 Sep 2021 13:30:11 +0000 Subject: sys: skip kvm const extraction for non i386/amd64 It is impossible to compile a number of definitions in include/uapi/linux/kvm.h for other platforms, which leads to syz-extract failing to update constants. Skip processing of this file for all arches except i386 and amd64. This is a hacky and (hopefully) temporary solution until #2754 is implemented. --- sys/syz-extract/linux.go | 12 +++++++----- sys/syz-sysgen/sysgen.go | 4 ++-- 2 files changed, 9 insertions(+), 7 deletions(-) (limited to 'sys') diff --git a/sys/syz-extract/linux.go b/sys/syz-extract/linux.go index e4f8d1bfe..c72e4b559 100644 --- a/sys/syz-extract/linux.go +++ b/sys/syz-extract/linux.go @@ -114,11 +114,13 @@ func (*linux) prepareArch(arch *Arch) error { func (*linux) processFile(arch *Arch, info *compiler.ConstInfo) (map[string]uint64, map[string]bool, error) { if strings.HasSuffix(info.File, "_kvm.txt") && - (arch.target.Arch == targets.ARM || arch.target.Arch == targets.RiscV64) { - // Hack: KVM is not supported on ARM anymore. We may want some more official support - // for marking descriptions arch-specific, but so far this combination is the only - // one. For riscv64, KVM is not supported yet but might be in the future. - // Note: syz-sysgen also ignores this file for arm and riscv64. + arch.target.Arch != targets.I386 && arch.target.Arch != targets.AMD64 { + // Hack: + // include/uapi/linux/kvm.h has definitions that can only be compiled under i386 + // and amd64 (e.g. KVM_SET_CPUID). On all other arches they generate build errors + // and therefore this tool is not able to proceed. + // TODO: remove this once #2754 is resolved. + // Note: syz-sysgen also ignores this file. return nil, nil, nil } headerArch := arch.target.KernelHeaderArch diff --git a/sys/syz-sysgen/sysgen.go b/sys/syz-sysgen/sysgen.go index b30a1d060..dd64be8d4 100644 --- a/sys/syz-sysgen/sysgen.go +++ b/sys/syz-sysgen/sysgen.go @@ -117,8 +117,8 @@ func main() { if OS == targets.Linux && (job.Target.Arch == targets.ARM || job.Target.Arch == targets.RiscV64) { // Hack: KVM is not supported on ARM anymore. On riscv64 it // is not supported yet but might be in the future. - // Note: syz-extract also ignores this file for arm and - // riscv64. + // Note: syz-extract ignores this file on all arches except + // i386 and amd64 (due to const extraction problems). top = descriptions.Filter(func(n ast.Node) bool { pos, _, _ := n.Info() return !strings.HasSuffix(pos.File, "_kvm.txt") -- cgit mrf-deployment