Message ID | 20230728055740.2284534-1-yonghong.song@linux.dev (mailing list archive) |
---|---|
State | Accepted |
Commit | 09fedc731874123e0f6e5e5e3572db0c60378c2a |
Delegated to: | BPF |
Headers | show |
Series | [bpf-next,1/2] bpf: Fix compilation warning with -Wparentheses | expand |
On Thu, Jul 27, 2023 at 10:57:40PM -0700, Yonghong Song wrote: > The kernel test robot reported compilation warnings when -Wparentheses is > added to KBUILD_CFLAGS with gcc compiler. The following is the error message: > > .../bpf-next/kernel/bpf/verifier.c: In function ‘coerce_reg_to_size_sx’: > .../bpf-next/kernel/bpf/verifier.c:5901:14: > error: suggest parentheses around comparison in operand of ‘==’ [-Werror=parentheses] > if (s64_max >= 0 == s64_min >= 0) { > ~~~~~~~~^~~~ > .../bpf-next/kernel/bpf/verifier.c: In function ‘coerce_subreg_to_size_sx’: > .../bpf-next/kernel/bpf/verifier.c:5965:14: > error: suggest parentheses around comparison in operand of ‘==’ [-Werror=parentheses] > if (s32_min >= 0 == s32_max >= 0) { > ~~~~~~~~^~~~ > > To fix the issue, add proper parentheses for the above '>=' condition > to silence the warning/error. > > I tried a few clang compilers like clang16 and clang18 and they do not emit > such warnings with -Wparentheses. I just hit it with gcc and this fixes it for me Acked-by: Jiri Olsa <jolsa@kernel.org> thanks, jirka > > Reported-by: kernel test robot <lkp@intel.com> > Closes: https://lore.kernel.org/oe-kbuild-all/202307281133.wi0c4SqG-lkp@intel.com/ > Signed-off-by: Yonghong Song <yonghong.song@linux.dev> > --- > kernel/bpf/core.c | 4 ++-- > kernel/bpf/verifier.c | 4 ++-- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c > index db0b631908c2..baccdec22f19 100644 > --- a/kernel/bpf/core.c > +++ b/kernel/bpf/core.c > @@ -1877,7 +1877,7 @@ static u64 ___bpf_prog_run(u64 *regs, const struct bpf_insn *insn) > case 1: > AX = abs((s32)DST); > do_div(AX, abs((s32)SRC)); > - if ((s32)DST < 0 == (s32)SRC < 0) > + if (((s32)DST < 0) == ((s32)SRC < 0)) > DST = (u32)AX; > else > DST = (u32)-AX; > @@ -1904,7 +1904,7 @@ static u64 ___bpf_prog_run(u64 *regs, const struct bpf_insn *insn) > case 1: > AX = abs((s32)DST); > do_div(AX, abs((s32)IMM)); > - if ((s32)DST < 0 == (s32)IMM < 0) > + if (((s32)DST < 0) == ((s32)IMM < 0)) > DST = (u32)AX; > else > DST = (u32)-AX; > diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c > index 0b1ada93582b..e7b1af016841 100644 > --- a/kernel/bpf/verifier.c > +++ b/kernel/bpf/verifier.c > @@ -5898,7 +5898,7 @@ static void coerce_reg_to_size_sx(struct bpf_reg_state *reg, int size) > s64_min = min(init_s64_max, init_s64_min); > > /* both of s64_max/s64_min positive or negative */ > - if (s64_max >= 0 == s64_min >= 0) { > + if ((s64_max >= 0) == (s64_min >= 0)) { > reg->smin_value = reg->s32_min_value = s64_min; > reg->smax_value = reg->s32_max_value = s64_max; > reg->umin_value = reg->u32_min_value = s64_min; > @@ -5962,7 +5962,7 @@ static void coerce_subreg_to_size_sx(struct bpf_reg_state *reg, int size) > s32_max = max(init_s32_max, init_s32_min); > s32_min = min(init_s32_max, init_s32_min); > > - if (s32_min >= 0 == s32_max >= 0) { > + if ((s32_min >= 0) == (s32_max >= 0)) { > reg->s32_min_value = s32_min; > reg->s32_max_value = s32_max; > reg->u32_min_value = (u32)s32_min; > -- > 2.34.1 > >
Hello: This series was applied to bpf/bpf-next.git (master) by Alexei Starovoitov <ast@kernel.org>: On Thu, 27 Jul 2023 22:57:40 -0700 you wrote: > The kernel test robot reported compilation warnings when -Wparentheses is > added to KBUILD_CFLAGS with gcc compiler. The following is the error message: > > .../bpf-next/kernel/bpf/verifier.c: In function ‘coerce_reg_to_size_sx’: > .../bpf-next/kernel/bpf/verifier.c:5901:14: > error: suggest parentheses around comparison in operand of ‘==’ [-Werror=parentheses] > if (s64_max >= 0 == s64_min >= 0) { > ~~~~~~~~^~~~ > .../bpf-next/kernel/bpf/verifier.c: In function ‘coerce_subreg_to_size_sx’: > .../bpf-next/kernel/bpf/verifier.c:5965:14: > error: suggest parentheses around comparison in operand of ‘==’ [-Werror=parentheses] > if (s32_min >= 0 == s32_max >= 0) { > ~~~~~~~~^~~~ > > [...] Here is the summary with links: - [bpf-next,1/2] bpf: Fix compilation warning with -Wparentheses https://git.kernel.org/bpf/bpf-next/c/09fedc731874 - [bpf-next,2/2] selftests/bpf: Enable test test_progs-cpuv4 for gcc build kernel https://git.kernel.org/bpf/bpf-next/c/a76584fc9ff6 You are awesome, thank you!
diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index db0b631908c2..baccdec22f19 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -1877,7 +1877,7 @@ static u64 ___bpf_prog_run(u64 *regs, const struct bpf_insn *insn) case 1: AX = abs((s32)DST); do_div(AX, abs((s32)SRC)); - if ((s32)DST < 0 == (s32)SRC < 0) + if (((s32)DST < 0) == ((s32)SRC < 0)) DST = (u32)AX; else DST = (u32)-AX; @@ -1904,7 +1904,7 @@ static u64 ___bpf_prog_run(u64 *regs, const struct bpf_insn *insn) case 1: AX = abs((s32)DST); do_div(AX, abs((s32)IMM)); - if ((s32)DST < 0 == (s32)IMM < 0) + if (((s32)DST < 0) == ((s32)IMM < 0)) DST = (u32)AX; else DST = (u32)-AX; diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 0b1ada93582b..e7b1af016841 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -5898,7 +5898,7 @@ static void coerce_reg_to_size_sx(struct bpf_reg_state *reg, int size) s64_min = min(init_s64_max, init_s64_min); /* both of s64_max/s64_min positive or negative */ - if (s64_max >= 0 == s64_min >= 0) { + if ((s64_max >= 0) == (s64_min >= 0)) { reg->smin_value = reg->s32_min_value = s64_min; reg->smax_value = reg->s32_max_value = s64_max; reg->umin_value = reg->u32_min_value = s64_min; @@ -5962,7 +5962,7 @@ static void coerce_subreg_to_size_sx(struct bpf_reg_state *reg, int size) s32_max = max(init_s32_max, init_s32_min); s32_min = min(init_s32_max, init_s32_min); - if (s32_min >= 0 == s32_max >= 0) { + if ((s32_min >= 0) == (s32_max >= 0)) { reg->s32_min_value = s32_min; reg->s32_max_value = s32_max; reg->u32_min_value = (u32)s32_min;
The kernel test robot reported compilation warnings when -Wparentheses is added to KBUILD_CFLAGS with gcc compiler. The following is the error message: .../bpf-next/kernel/bpf/verifier.c: In function ‘coerce_reg_to_size_sx’: .../bpf-next/kernel/bpf/verifier.c:5901:14: error: suggest parentheses around comparison in operand of ‘==’ [-Werror=parentheses] if (s64_max >= 0 == s64_min >= 0) { ~~~~~~~~^~~~ .../bpf-next/kernel/bpf/verifier.c: In function ‘coerce_subreg_to_size_sx’: .../bpf-next/kernel/bpf/verifier.c:5965:14: error: suggest parentheses around comparison in operand of ‘==’ [-Werror=parentheses] if (s32_min >= 0 == s32_max >= 0) { ~~~~~~~~^~~~ To fix the issue, add proper parentheses for the above '>=' condition to silence the warning/error. I tried a few clang compilers like clang16 and clang18 and they do not emit such warnings with -Wparentheses. Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202307281133.wi0c4SqG-lkp@intel.com/ Signed-off-by: Yonghong Song <yonghong.song@linux.dev> --- kernel/bpf/core.c | 4 ++-- kernel/bpf/verifier.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-)