2023-02-06 04:54:11

by Herbert Xu

[permalink] [raw]
Subject: [PATCH] crypto: ecc - Silence sparse warning

Rewrite the bitwise operations to silence the sparse warnings:

CHECK ../crypto/ecc.c
../crypto/ecc.c:1387:39: warning: dubious: !x | y
../crypto/ecc.c:1397:47: warning: dubious: !x | y

Signed-off-by: Herbert Xu <[email protected]>

diff --git a/crypto/ecc.c b/crypto/ecc.c
index 7315217c8f73..f53fb4d6af99 100644
--- a/crypto/ecc.c
+++ b/crypto/ecc.c
@@ -1384,7 +1384,8 @@ void ecc_point_mult_shamir(const struct ecc_point *result,

num_bits = max(vli_num_bits(u1, ndigits), vli_num_bits(u2, ndigits));
i = num_bits - 1;
- idx = (!!vli_test_bit(u1, i)) | ((!!vli_test_bit(u2, i)) << 1);
+ idx = !!vli_test_bit(u1, i);
+ idx |= (!!vli_test_bit(u2, i)) << 1;
point = points[idx];

vli_set(rx, point->x, ndigits);
@@ -1394,7 +1395,8 @@ void ecc_point_mult_shamir(const struct ecc_point *result,

for (--i; i >= 0; i--) {
ecc_point_double_jacobian(rx, ry, z, curve);
- idx = (!!vli_test_bit(u1, i)) | ((!!vli_test_bit(u2, i)) << 1);
+ idx = !!vli_test_bit(u1, i);
+ idx |= (!!vli_test_bit(u2, i)) << 1;
point = points[idx];
if (point) {
u64 tx[ECC_MAX_DIGITS];
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt


2023-02-06 06:12:25

by Vitaly Chikunov

[permalink] [raw]
Subject: Re: [PATCH] crypto: ecc - Silence sparse warning

On Mon, Feb 06, 2023 at 12:53:38PM +0800, Herbert Xu wrote:
> Rewrite the bitwise operations to silence the sparse warnings:
>
> CHECK ../crypto/ecc.c
> ../crypto/ecc.c:1387:39: warning: dubious: !x | y
> ../crypto/ecc.c:1397:47: warning: dubious: !x | y
>
> Signed-off-by: Herbert Xu <[email protected]>
>
> diff --git a/crypto/ecc.c b/crypto/ecc.c
> index 7315217c8f73..f53fb4d6af99 100644
> --- a/crypto/ecc.c
> +++ b/crypto/ecc.c
> @@ -1384,7 +1384,8 @@ void ecc_point_mult_shamir(const struct ecc_point *result,
>
> num_bits = max(vli_num_bits(u1, ndigits), vli_num_bits(u2, ndigits));
> i = num_bits - 1;
> - idx = (!!vli_test_bit(u1, i)) | ((!!vli_test_bit(u2, i)) << 1);
> + idx = !!vli_test_bit(u1, i);
> + idx |= (!!vli_test_bit(u2, i)) << 1;
> point = points[idx];
>
> vli_set(rx, point->x, ndigits);
> @@ -1394,7 +1395,8 @@ void ecc_point_mult_shamir(const struct ecc_point *result,
>
> for (--i; i >= 0; i--) {
> ecc_point_double_jacobian(rx, ry, z, curve);
> - idx = (!!vli_test_bit(u1, i)) | ((!!vli_test_bit(u2, i)) << 1);
> + idx = !!vli_test_bit(u1, i);
> + idx |= (!!vli_test_bit(u2, i)) << 1;

Reviewed-by: Vitaly Chikunov <[email protected]>

Thanks,

> point = points[idx];
> if (point) {
> u64 tx[ECC_MAX_DIGITS];
> --
> Email: Herbert Xu <[email protected]>
> Home Page: http://gondor.apana.org.au/~herbert/
> PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt