| From 8a64ef042eab8a6cec04a6c79d44d1af79b628ca Mon Sep 17 00:00:00 2001 |
| From: Nathan Chancellor <nathan@kernel.org> |
| Date: Mon, 18 Oct 2021 12:31:01 -0700 |
| Subject: nfp: bpf: silence bitwise vs. logical OR warning |
| |
| From: Nathan Chancellor <nathan@kernel.org> |
| |
| commit 8a64ef042eab8a6cec04a6c79d44d1af79b628ca upstream. |
| |
| A new warning in clang points out two places in this driver where |
| boolean expressions are being used with a bitwise OR instead of a |
| logical one: |
| |
| drivers/net/ethernet/netronome/nfp/nfp_asm.c:199:20: error: use of bitwise '|' with boolean operands [-Werror,-Wbitwise-instead-of-logical] |
| reg->src_lmextn = swreg_lmextn(lreg) | swreg_lmextn(rreg); |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| || |
| drivers/net/ethernet/netronome/nfp/nfp_asm.c:199:20: note: cast one or both operands to int to silence this warning |
| drivers/net/ethernet/netronome/nfp/nfp_asm.c:280:20: error: use of bitwise '|' with boolean operands [-Werror,-Wbitwise-instead-of-logical] |
| reg->src_lmextn = swreg_lmextn(lreg) | swreg_lmextn(rreg); |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| || |
| drivers/net/ethernet/netronome/nfp/nfp_asm.c:280:20: note: cast one or both operands to int to silence this warning |
| 2 errors generated. |
| |
| The motivation for the warning is that logical operations short circuit |
| while bitwise operations do not. In this case, it does not seem like |
| short circuiting is harmful so implement the suggested fix of changing |
| to a logical operation to fix the warning. |
| |
| Link: https://github.com/ClangBuiltLinux/linux/issues/1479 |
| Reported-by: Nick Desaulniers <ndesaulniers@google.com> |
| Signed-off-by: Nathan Chancellor <nathan@kernel.org> |
| Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> |
| Link: https://lore.kernel.org/r/20211018193101.2340261-1-nathan@kernel.org |
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/netronome/nfp/nfp_asm.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/net/ethernet/netronome/nfp/nfp_asm.c |
| +++ b/drivers/net/ethernet/netronome/nfp/nfp_asm.c |
| @@ -196,7 +196,7 @@ int swreg_to_unrestricted(swreg dst, swr |
| } |
| |
| reg->dst_lmextn = swreg_lmextn(dst); |
| - reg->src_lmextn = swreg_lmextn(lreg) | swreg_lmextn(rreg); |
| + reg->src_lmextn = swreg_lmextn(lreg) || swreg_lmextn(rreg); |
| |
| return 0; |
| } |
| @@ -277,7 +277,7 @@ int swreg_to_restricted(swreg dst, swreg |
| } |
| |
| reg->dst_lmextn = swreg_lmextn(dst); |
| - reg->src_lmextn = swreg_lmextn(lreg) | swreg_lmextn(rreg); |
| + reg->src_lmextn = swreg_lmextn(lreg) || swreg_lmextn(rreg); |
| |
| return 0; |
| } |