On Fri, Mar 12, 2021 at 04:55:46AM -0500, Valdis Klētnieks wrote: > Building arch/arm64/kernel/sys.o with W=1 throws over 300 warnings: > > /usr/src/linux-next/arch/arm64/kernel/sys.c:56:40: warning: initialized field > overwritten [-Woverride-init] > 56 | #define __SYSCALL(nr, sym) [nr] = __arm64_##sym, > | ^~~~~~~~ > /usr/src/linux-next/include/uapi/asm-generic/unistd.h:29:37: note: in > expansion of macro '__SYSCALL' > 29 | #define __SC_COMP(_nr, _sys, _comp) __SYSCALL(_nr, _sys) > | ^~~~~~~~~ > /usr/src/linux-next/include/uapi/asm-generic/unistd.h:34:1: note: in > expansion of macro '__SC_COMP' > 34 | __SC_COMP(__NR_io_setup, sys_io_setup, compat_sys_io_setup) > | ^~~~~~~~~ > > We know that's pretty much the file's purpose in life, so tell the > build system to not remind us. This makes the 1 other warning a > lot more noticeable. > > Signed-off-by: Valdis Kletnieks <valdis.kletni...@vt.edu> > > diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile > index ed65576ce710..916b21d2b35b 100644 > --- a/arch/arm64/kernel/Makefile > +++ b/arch/arm64/kernel/Makefile > @@ -8,6 +8,7 @@ CFLAGS_armv8_deprecated.o := -I$(src) > CFLAGS_REMOVE_ftrace.o = $(CC_FLAGS_FTRACE) > CFLAGS_REMOVE_insn.o = $(CC_FLAGS_FTRACE) > CFLAGS_REMOVE_return_address.o = $(CC_FLAGS_FTRACE) > +CFLAGS_sys.o += $(call cc-disable-warning, override-init)
We do similar initialisation in arch/arm64/kernel/sys32.c and arch/arm64/kernel/traps.c for example. It's a pretty common pattern throughout the kernel. So we either treat W=1 output as diff against the vanilla kernel when checking new patches or we remove override-init altogether from W=1. Mark Rutland pointed me to an older thread: https://lore.kernel.org/linux-arm-kernel/20190809083251.ga48...@lakrids.cambridge.arm.com/ -- Catalin