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.
Signed-off-by: Valdis Kletnieks <redacted>
On Sun, Jan 27, 2019 at 8:43 PM [off-list ref] 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
From: Daniel Borkmann <daniel@iogearbox.net> Date: 2019-01-28 23:22:34
On 01/28/2019 06:18 PM, Song Liu wrote:
On Sun, Jan 27, 2019 at 8:43 PM [off-list ref] wrote:
quoted
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.
Agree, valid concern.
Maybe we should move bpf_opcode_in_insntable() to a separate file, and mute
warning for that file?
I think moving in separate file would be overkill, imho. However, lets get
the kdoc and prototype warning fixed.
Thanks,
Daniel
On Mon, 28 Jan 2019 09:18:45 -0800, Song Liu said:
On Sun, Jan 27, 2019 at 8:43 PM [off-list ref] wrote:
quoted
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.
I checked and there weren't any warnings for other parts of the file. Also, this message
doesn't even happen unless you build with W=1, which apparently happens so rarely
that nobody else has submitted a patch.
Is there a high likelihood that another overwrite of an initializer is going to
be included in the source?
Maybe we should move bpf_opcode_in_insntable() to a separate file, and mute
warning for that file?
Seems to be overkill - the intent of this patch was mostly to make the *other*
warnings issued with W=1 more noticable.
On Mon, Jan 28, 2019 at 3:35 PM [off-list ref] wrote:
On Mon, 28 Jan 2019 09:18:45 -0800, Song Liu said:
quoted
On Sun, Jan 27, 2019 at 8:43 PM [off-list ref] wrote:
quoted
quoted
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.
I checked and there weren't any warnings for other parts of the file. Also, this message
doesn't even happen unless you build with W=1, which apparently happens so rarely
that nobody else has submitted a patch.
Is there a high likelihood that another overwrite of an initializer is going to
be included in the source?
quoted
Maybe we should move bpf_opcode_in_insntable() to a separate file, and mute
warning for that file?
Seems to be overkill - the intent of this patch was mostly to make the *other*
warnings issued with W=1 more noticable.
Yeah, I also felt this might be overkill while asking initially.
Acked-by: Song Liu <redacted>