syz-extract and include errors

161 views
Skip to first unread message

deepak gupta

unread,
Mar 24, 2021, 6:47:38 PM3/24/21
to syzkaller
I am trying to use `syz-extract` (instead of make extract) to run on a single file for a single arch but it runs into errors. 

I've a kernel driver (which exposes a file) that interacts with the kvm subsystem and requires kvm's fd_kvmvm resource.
Essentially no new syscall but a new file (open$customfile) and ioctls (ioctl$customioctls on customfile)

Since one of the ioctl require a fd_kvmfd, I added new descriptions in dev_kvm.txt

However when I try to extract using `syz-extract`, I run into something like below

$: ~/tools/gopath/src/github.com/google/syzkaller$ ./bin/syz-extract -os linux -arch amd64 -sourcedir $KERNEL_SRC -builddir $BUILD_DIR dev_kvm.txt
generating linux/amd64...
dev_kvm.txt: failed to run compiler: gcc [-nostdinc -w -fmessage-length=0 -O3 -I. -D__KERNEL__ -DKBUILD_MODNAME="-" -I<snipped>/linux/arch/x86/include -I<snipped>/build-x86_64/linux/arch/x86/include/generated/uapi -I<snipped>/build-x86_64/linux/arch/x86/include/generated -I<snipped>/linux/arch/x86/include/asm/mach-malta -I<snipped>/linux/arch/x86/include/asm/mach-generic -I<snipped>/build-x86_64/linux/include -I<snipped>/linux/include -I<snipped>/linux/arch/x86/include/uapi -I<snipped>/build-x86_64/linux/arch/x86/include/generated/uapi -I<snipped>/linux/include/uapi -I<snipped>/build-x86_64/linux/include/generated/uapi -I<snipped>/linux -I<snipped>/linux/include/linux -I<snipped>/build-x86_64/linux/syzkaller -include <snipped>/linux/include/linux/kconfig.h -m64 -O2 -pthread -Wall -Werror -Wparentheses -Wunused-const-variable -Wframe-larger-than=16384 -static]
exit status 1
In file included from <snipped>/linux/arch/x86/include/asm/mmu.h:5:0,
                 from <snipped>/linux/arch/x86/include/asm/acpi.h:14,
                 from <snipped>/linux/arch/x86/include/asm/fixmap.h:40,
                 from <snipped>/linux/arch/x86/include/asm/apic.h:11,
                 from <snipped>/linux/arch/x86/include/asm/smp.h:13,
                 from <snipped>/linux/include/linux/smp.h:68,
                 from <snipped>/linux/include/linux/percpu.h:7,
                 from <snipped>/linux/include/linux/context_tracking_state.h:5,
                 from <snipped>/linux/include/linux/vtime.h:5,
                 from <snipped>/linux/include/linux/hardirq.h:8,
                 from <snipped>/linux/include/linux/kvm_host.h:7,
                 from <stdin>:9:
<snipped>/linux/include/linux/spinlock.h:60:10: fatal error: asm/mmiowb.h: No such file or directory
 #include <asm/mmiowb.h>
          ^~~~~~~~~~~~~~
compilation terminated

If I find mmiowb.h
$: find . -name mmiowb.h | grep x86
./arch/x86/include/generated/asm/mmiowb.h

Any help on how I should troubleshoot this, will be helpful.

-Deepak

Dmitry Vyukov

unread,
Mar 25, 2021, 3:24:54 AM3/25/21
to deepak gupta, syzkaller
Hi Deepak,

You probably pass -sourcedir $KERNEL_SRC -builddir $BUILD_DIR incorrectly.
This path is added to includes from $BUILD_DIR:
https://github.com/google/syzkaller/blob/master/sys/syz-extract/linux.go#L140

You can see it in command line:
-I<snipped>/build-x86_64/linux/arch/x86/include/generated

Are you sure you build kernel in build-x86_64 subdir?

deepak gupta

unread,
Mar 25, 2021, 5:20:17 PM3/25/21
to Dmitry Vyukov, syzkaller
Yeah that's the build directory (assuming build directory is where vmlinux file is placed)

Damn!, sorry to bother (I am new to linux kernel and it's build env as well).
The build invocation on the kernel I am working on is initiated by a custom build script.

I needed add one directory in path "build-x86_64/linux/source/"


-Deepak
Reply all
Reply to author
Forward
0 new messages