linux-crypto.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] crypto: fix comparison of unsigned expression warnings
@ 2019-09-30  8:49 Tian Tao
  2019-09-30 14:17 ` Jonathan Cameron
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Tian Tao @ 2019-09-30  8:49 UTC (permalink / raw)
  To: gilad, herbert, davem, linux-crypto; +Cc: linuxarm

This patch fixes the following warnings:
drivers/crypto/ccree/cc_aead.c:630:5-12: WARNING: Unsigned expression
compared with zero: seq_len > 0

Signed-off-by: Tian Tao <tiantao6@huawei.com>
---
 drivers/crypto/ccree/cc_aead.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/crypto/ccree/cc_aead.c b/drivers/crypto/ccree/cc_aead.c
index d3e8faa..b19291d 100644
--- a/drivers/crypto/ccree/cc_aead.c
+++ b/drivers/crypto/ccree/cc_aead.c
@@ -546,7 +546,7 @@ static int cc_aead_setkey(struct crypto_aead *tfm, const u8 *key,
 	struct cc_aead_ctx *ctx = crypto_aead_ctx(tfm);
 	struct cc_crypto_req cc_req = {};
 	struct cc_hw_desc desc[MAX_AEAD_SETKEY_SEQ];
-	unsigned int seq_len = 0;
+	int seq_len = 0;
 	struct device *dev = drvdata_to_dev(ctx->drvdata);
 	const u8 *enckey, *authkey;
 	int rc;
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] crypto: fix comparison of unsigned expression warnings
  2019-09-30  8:49 [PATCH] crypto: fix comparison of unsigned expression warnings Tian Tao
@ 2019-09-30 14:17 ` Jonathan Cameron
  2019-09-30 14:44   ` Jonathan Cameron
  2019-10-02 10:00 ` Gilad Ben-Yossef
  2019-10-17 13:45 ` Gilad Ben-Yossef
  2 siblings, 1 reply; 6+ messages in thread
From: Jonathan Cameron @ 2019-09-30 14:17 UTC (permalink / raw)
  To: Tian Tao; +Cc: gilad, herbert, davem, linux-crypto, linuxarm

On Mon, 30 Sep 2019 16:49:21 +0800
Tian Tao <tiantao6@huawei.com> wrote:

> This patch fixes the following warnings:
> drivers/crypto/ccree/cc_aead.c:630:5-12: WARNING: Unsigned expression
> compared with zero: seq_len > 0
> 
> Signed-off-by: Tian Tao <tiantao6@huawei.com>

Apologies, I should have looked into this in more depth when you asked
me about it earlier rather than assuming it was 'obviously' the right
fix.

It's more complex than I expected given the warning, which I note
is > 0 so it's not always true.  I'm curious, which compiler generates
that warning?

So there are two ways seq_len can be set to non 0, hmac_setkey which returns a
signed int, but one that is reality is >= 0. The other is xcbc_setkey
which returns an unsigned int.

So I would suggest that in addition to what you have here, a change
to the return type of hmac_setkey in order to make it clear that
never returns a negative anyway.

Can also use if (seq_len)
rather than if (seq_len > 0)

Thanks,

Jonathan


 
> ---
>  drivers/crypto/ccree/cc_aead.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/crypto/ccree/cc_aead.c b/drivers/crypto/ccree/cc_aead.c
> index d3e8faa..b19291d 100644
> --- a/drivers/crypto/ccree/cc_aead.c
> +++ b/drivers/crypto/ccree/cc_aead.c
> @@ -546,7 +546,7 @@ static int cc_aead_setkey(struct crypto_aead *tfm, const u8 *key,
>  	struct cc_aead_ctx *ctx = crypto_aead_ctx(tfm);
>  	struct cc_crypto_req cc_req = {};
>  	struct cc_hw_desc desc[MAX_AEAD_SETKEY_SEQ];
> -	unsigned int seq_len = 0;
> +	int seq_len = 0;
>  	struct device *dev = drvdata_to_dev(ctx->drvdata);
>  	const u8 *enckey, *authkey;
>  	int rc;



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] crypto: fix comparison of unsigned expression warnings
  2019-09-30 14:17 ` Jonathan Cameron
@ 2019-09-30 14:44   ` Jonathan Cameron
  0 siblings, 0 replies; 6+ messages in thread
From: Jonathan Cameron @ 2019-09-30 14:44 UTC (permalink / raw)
  To: Tian Tao; +Cc: gilad, herbert, davem, linux-crypto, linuxarm

On Mon, 30 Sep 2019 15:17:02 +0100
Jonathan Cameron <jonathan.cameron@huawei.com> wrote:

> On Mon, 30 Sep 2019 16:49:21 +0800
> Tian Tao <tiantao6@huawei.com> wrote:
> 
> > This patch fixes the following warnings:
> > drivers/crypto/ccree/cc_aead.c:630:5-12: WARNING: Unsigned expression
> > compared with zero: seq_len > 0
> > 
> > Signed-off-by: Tian Tao <tiantao6@huawei.com>  
> 
> Apologies, I should have looked into this in more depth when you asked
> me about it earlier rather than assuming it was 'obviously' the right
> fix.
> 
> It's more complex than I expected given the warning, which I note
> is > 0 so it's not always true.  I'm curious, which compiler generates
> that warning?
> 
> So there are two ways seq_len can be set to non 0, hmac_setkey which returns a
> signed int, but one that is reality is >= 0. The other is xcbc_setkey
> which returns an unsigned int.
> 
> So I would suggest that in addition to what you have here, a change
> to the return type of hmac_setkey in order to make it clear that
> never returns a negative anyway.

Hmm. Perhaps I shouldn't review with jetlag...   That should have said
that I think the variable should be left unsigned as reality is that
it is always >= 0.

> 
> Can also use if (seq_len)
> rather than if (seq_len > 0)
> 
> Thanks,
> 
> Jonathan
> 
> 
>  
> > ---
> >  drivers/crypto/ccree/cc_aead.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/crypto/ccree/cc_aead.c b/drivers/crypto/ccree/cc_aead.c
> > index d3e8faa..b19291d 100644
> > --- a/drivers/crypto/ccree/cc_aead.c
> > +++ b/drivers/crypto/ccree/cc_aead.c
> > @@ -546,7 +546,7 @@ static int cc_aead_setkey(struct crypto_aead *tfm, const u8 *key,
> >  	struct cc_aead_ctx *ctx = crypto_aead_ctx(tfm);
> >  	struct cc_crypto_req cc_req = {};
> >  	struct cc_hw_desc desc[MAX_AEAD_SETKEY_SEQ];
> > -	unsigned int seq_len = 0;
> > +	int seq_len = 0;
> >  	struct device *dev = drvdata_to_dev(ctx->drvdata);
> >  	const u8 *enckey, *authkey;
> >  	int rc;  
> 



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] crypto: fix comparison of unsigned expression warnings
  2019-09-30  8:49 [PATCH] crypto: fix comparison of unsigned expression warnings Tian Tao
  2019-09-30 14:17 ` Jonathan Cameron
@ 2019-10-02 10:00 ` Gilad Ben-Yossef
  2019-10-08  1:00   ` 答复: " tiantao (H)
  2019-10-17 13:45 ` Gilad Ben-Yossef
  2 siblings, 1 reply; 6+ messages in thread
From: Gilad Ben-Yossef @ 2019-10-02 10:00 UTC (permalink / raw)
  To: Tian Tao; +Cc: Herbert Xu, David Miller, Linux Crypto Mailing List, linuxarm

Hi,


On Mon, Sep 30, 2019 at 11:52 AM Tian Tao <tiantao6@huawei.com> wrote:
>
> This patch fixes the following warnings:
> drivers/crypto/ccree/cc_aead.c:630:5-12: WARNING: Unsigned expression
> compared with zero: seq_len > 0
>

Thanks for the report!

Can you please share which compiler/arch/config you use that produces
this warning?

I'm not seeing it on my end.

Many thanks,
Gilad

> Signed-off-by: Tian Tao <tiantao6@huawei.com>
> ---
>  drivers/crypto/ccree/cc_aead.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/crypto/ccree/cc_aead.c b/drivers/crypto/ccree/cc_aead.c
> index d3e8faa..b19291d 100644
> --- a/drivers/crypto/ccree/cc_aead.c
> +++ b/drivers/crypto/ccree/cc_aead.c
> @@ -546,7 +546,7 @@ static int cc_aead_setkey(struct crypto_aead *tfm, const u8 *key,
>         struct cc_aead_ctx *ctx = crypto_aead_ctx(tfm);
>         struct cc_crypto_req cc_req = {};
>         struct cc_hw_desc desc[MAX_AEAD_SETKEY_SEQ];
> -       unsigned int seq_len = 0;
> +       int seq_len = 0;
>         struct device *dev = drvdata_to_dev(ctx->drvdata);
>         const u8 *enckey, *authkey;
>         int rc;
> --
> 2.7.4
>


-- 
Gilad Ben-Yossef
Chief Coffee Drinker

values of β will give rise to dom!

^ permalink raw reply	[flat|nested] 6+ messages in thread

* 答复: [PATCH] crypto: fix comparison of unsigned expression warnings
  2019-10-02 10:00 ` Gilad Ben-Yossef
@ 2019-10-08  1:00   ` tiantao (H)
  0 siblings, 0 replies; 6+ messages in thread
From: tiantao (H) @ 2019-10-08  1:00 UTC (permalink / raw)
  To: Gilad Ben-Yossef
  Cc: Herbert Xu, David Miller, Linux Crypto Mailing List, Linuxarm

Hi,

I found this warning using the command "make coccicheck COCCI=scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci MODE=patch" 

Best

-----邮件原件-----
发件人: Gilad Ben-Yossef [mailto:gilad@benyossef.com] 
发送时间: 2019年10月2日 18:00
收件人: tiantao (H) <tiantao6@huawei.com>
抄送: Herbert Xu <herbert@gondor.apana.org.au>; David Miller <davem@davemloft.net>; Linux Crypto Mailing List <linux-crypto@vger.kernel.org>; Linuxarm <linuxarm@huawei.com>
主题: Re: [PATCH] crypto: fix comparison of unsigned expression warnings

Hi,


On Mon, Sep 30, 2019 at 11:52 AM Tian Tao <tiantao6@huawei.com> wrote:
>
> This patch fixes the following warnings:
> drivers/crypto/ccree/cc_aead.c:630:5-12: WARNING: Unsigned expression 
> compared with zero: seq_len > 0
>

Thanks for the report!

Can you please share which compiler/arch/config you use that produces this warning?

I'm not seeing it on my end.

Many thanks,
Gilad

> Signed-off-by: Tian Tao <tiantao6@huawei.com>
> ---
>  drivers/crypto/ccree/cc_aead.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/crypto/ccree/cc_aead.c 
> b/drivers/crypto/ccree/cc_aead.c index d3e8faa..b19291d 100644
> --- a/drivers/crypto/ccree/cc_aead.c
> +++ b/drivers/crypto/ccree/cc_aead.c
> @@ -546,7 +546,7 @@ static int cc_aead_setkey(struct crypto_aead *tfm, const u8 *key,
>         struct cc_aead_ctx *ctx = crypto_aead_ctx(tfm);
>         struct cc_crypto_req cc_req = {};
>         struct cc_hw_desc desc[MAX_AEAD_SETKEY_SEQ];
> -       unsigned int seq_len = 0;
> +       int seq_len = 0;
>         struct device *dev = drvdata_to_dev(ctx->drvdata);
>         const u8 *enckey, *authkey;
>         int rc;
> --
> 2.7.4
>


--
Gilad Ben-Yossef
Chief Coffee Drinker

values of β will give rise to dom!

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] crypto: fix comparison of unsigned expression warnings
  2019-09-30  8:49 [PATCH] crypto: fix comparison of unsigned expression warnings Tian Tao
  2019-09-30 14:17 ` Jonathan Cameron
  2019-10-02 10:00 ` Gilad Ben-Yossef
@ 2019-10-17 13:45 ` Gilad Ben-Yossef
  2 siblings, 0 replies; 6+ messages in thread
From: Gilad Ben-Yossef @ 2019-10-17 13:45 UTC (permalink / raw)
  To: Tian Tao; +Cc: Herbert Xu, David Miller, Linux Crypto Mailing List, linuxarm

On Mon, Sep 30, 2019 at 11:52 AM Tian Tao <tiantao6@huawei.com> wrote:
>
> This patch fixes the following warnings:
> drivers/crypto/ccree/cc_aead.c:630:5-12: WARNING: Unsigned expression
> compared with zero: seq_len > 0

Thank you very much for the patch. Please accept my apologies that it
took me some time to respond.

I'm sorry, but I don't think this is the right solution here:

seq_len here can never get a negative value so the warning is a false one.

Having said that, I suspect it would be better code to:
1. change hmac_setkey() return type to unsigned int as well, as it
doesn't ever return a negative number.
2. change the predicate in the if statement the warning mentions to
seq_len != 0.

That would be a clearer code and possibly will also silence the false warning

So NACK for this one but I would accept a patch doing he above if you send one.

Thanks again for taking the time to do this.

Gilad

>
> Signed-off-by: Tian Tao <tiantao6@huawei.com>
> ---
>  drivers/crypto/ccree/cc_aead.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/crypto/ccree/cc_aead.c b/drivers/crypto/ccree/cc_aead.c
> index d3e8faa..b19291d 100644
> --- a/drivers/crypto/ccree/cc_aead.c
> +++ b/drivers/crypto/ccree/cc_aead.c
> @@ -546,7 +546,7 @@ static int cc_aead_setkey(struct crypto_aead *tfm, const u8 *key,
>         struct cc_aead_ctx *ctx = crypto_aead_ctx(tfm);
>         struct cc_crypto_req cc_req = {};
>         struct cc_hw_desc desc[MAX_AEAD_SETKEY_SEQ];
> -       unsigned int seq_len = 0;
> +       int seq_len = 0;
>         struct device *dev = drvdata_to_dev(ctx->drvdata);
>         const u8 *enckey, *authkey;
>         int rc;
> --
> 2.7.4
>


-- 
Gilad Ben-Yossef
Chief Coffee Drinker

values of β will give rise to dom!

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-10-17 13:45 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-30  8:49 [PATCH] crypto: fix comparison of unsigned expression warnings Tian Tao
2019-09-30 14:17 ` Jonathan Cameron
2019-09-30 14:44   ` Jonathan Cameron
2019-10-02 10:00 ` Gilad Ben-Yossef
2019-10-08  1:00   ` 答复: " tiantao (H)
2019-10-17 13:45 ` Gilad Ben-Yossef

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).