On Sun, Jan 27, 2019 at 8:43 PM <valdis.kletni...@vt.edu> wrote: > > Compiling kernel/bpf/core.c with W=1 causes a flood of warnings: > > kernel/bpf/core.c:1198:65: warning: initialized field overwritten > [-Woverride-init] > 1198 | #define BPF_INSN_3_TBL(x, y, z) [BPF_##x | BPF_##y | BPF_##z] = true > | ^~~~ > kernel/bpf/core.c:1087:2: note: in expansion of macro 'BPF_INSN_3_TBL' > 1087 | INSN_3(ALU, ADD, X), \ > | ^~~~~~ > kernel/bpf/core.c:1202:3: note: in expansion of macro 'BPF_INSN_MAP' > 1202 | BPF_INSN_MAP(BPF_INSN_2_TBL, BPF_INSN_3_TBL), > | ^~~~~~~~~~~~ > kernel/bpf/core.c:1198:65: note: (near initialization for > 'public_insntable[12]') > 1198 | #define BPF_INSN_3_TBL(x, y, z) [BPF_##x | BPF_##y | BPF_##z] = true > | ^~~~ > kernel/bpf/core.c:1087:2: note: in expansion of macro 'BPF_INSN_3_TBL' > 1087 | INSN_3(ALU, ADD, X), \ > | ^~~~~~ > kernel/bpf/core.c:1202:3: note: in expansion of macro 'BPF_INSN_MAP' > 1202 | BPF_INSN_MAP(BPF_INSN_2_TBL, BPF_INSN_3_TBL), > | ^~~~~~~~~~~~ > > 98 copies of the above. > > The attached patch silences the warnings, because we *know* we're overwriting > the default initializer. That leaves bpf/core.c with only 6 other warnings, > which become more visible in comparison.
My concern is that this will also mute the warning for other parts of bpf/core.c. Maybe we should move bpf_opcode_in_insntable() to a separate file, and mute warning for that file? Daniel and Alexei, what do you think? Thanks, Song > > Signed-off-by: Valdis Kletnieks <valdis.kletni...@vt.edu> > > diff --git a/kernel/bpf/Makefile b/kernel/bpf/Makefile > index 4c2fa3ac56f6..2606665f2cb5 100644 > --- a/kernel/bpf/Makefile > +++ b/kernel/bpf/Makefile > @@ -21,3 +21,4 @@ obj-$(CONFIG_CGROUP_BPF) += cgroup.o > ifeq ($(CONFIG_INET),y) > obj-$(CONFIG_BPF_SYSCALL) += reuseport_array.o > endif > +CFLAGS_core.o += $(call cc-disable-warning, override-init) >