OK, using the standard vanilla 4.16.2 kernel. Installed via #make -j8 ; make modules_install ; make install Here is output from my module build with V=1 #make V=1 make -C /lib/modules/4.16.2/build SUBDIRS=$PWD make[1]: Entering directory '/usr/src/linux-4.16.2' test -e include/generated/autoconf.h -a -e include/config/auto.conf || ( \ echo >&2; \ echo >&2 " ERROR: Kernel configuration is invalid."; \ echo >&2 " include/generated/autoconf.h or include/config/auto.conf are missing.";\ echo >&2 " Run 'make oldconfig && make prepare' on kernel src to fix it."; \ echo >&2 ; \ /bin/false) mkdir -p /home/markh/work/hidas-linux/driver/.tmp_versions ; rm -f /home/markh/work/hidas-linux/driver/.tmp_versions/* make -f ./scripts/Makefile.build obj=/home/markh/work/hidas-linux/driver gcc -Wp,-MD,/home/markh/work/hidas-linux/driver/.hic.o.d -nostdinc -isystem /usr/lib64/gcc/x86_64-suse-linux/4.8/include -I./arch/x86/include -I./arch/x86/include/generated -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_AVX512=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -DRETPOLINE -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-int-in-bool-context -O2 -Wno-maybe-uninitialized --param=allow-store-data-races=0 -DCC_HAVE_ASM_GOTO -Wframe-larger-than=2048 -fno-stack-protector -Wno-unused-but-set-variable -Wno-unused-const-variable -fomit-frame-pointer -fno-var-tracking-assignments -g -fno-inline-functions-called-once -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-merge-all-constants -fmerge-constants -fno-stack-check -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wall -I/home/markh/work/hidas-linux/driver/../include/sys -I/home/markh/work/hidas-linux/driver/../include -DMODULE -DKBUILD_BASENAME='"hic"' -DKBUILD_MODNAME='"hic"' -c -o /home/markh/work/hidas-linux/driver/.tmp_hic.o /home/markh/work/hidas-linux/driver/hic.c In file included from /home/markh/work/hidas-linux/driver/hic.c:33:0: ./include/linux/kernel.h:6:10: fatal error: stdarg.h: No such file or directory #include <stdarg.h> ^~~~~~~~~~ compilation terminated. make[2]: *** [scripts/Makefile.build:331: /home/markh/work/hidas-linux/driver/hic.o] Error 1 make[1]: *** [Makefile:1561: _module_/home/markh/work/hidas-linux/driver] Error 2 make[1]: Leaving directory '/usr/src/linux-4.16.2' make: *** [Makefile:53: all] Error 2 Notice the "-isystem /usr/lib64/gcc/x86_64-suse-linux/4.8/include" above??? # cc -print-file-name=include /usr/lib64/gcc/x86_64-suse-linux/7/include That looks correct? Here is the vanilla 4.16.2 top Makefile reference to NOSTDINC_FLAGS NOSTDINC_FLAGS += -nostdinc -isystem $(call shell-cached,$(CC) -print-file-name=include) I am on Beta build 187.1 not 197.1?