diff mbox series

[3/3] crypto: hisilicon/hpre - fix a bug in dh algorithm

Message ID 1599737122-20734-4-git-send-email-yumeng18@huawei.com
State Accepted
Commit bfc1159e7f0607cdaaef380792c036b96310da72
Headers show
Series crypto: hisilicon/hpre - misc clean up and fixes | expand

Commit Message

yumeng Sept. 10, 2020, 11:25 a.m. UTC
Using 'g' equals 5 in dh algorithm may cause an error like this:

arm-smmu-v3 arm-smmu-v3.1.auto: event 0x10 received:
dh: Party A: generate public key test failed. err -22
11375.065672] dh alg: dh: test failed on vector 1, err=-22
arm-smmu-v3 arm-smmu-v3.1.auto:  0x0000790000000010
arm-smmu-v3 arm-smmu-v3.1.auto:  0x0000120800000080
hpre-dh self test failed
arm-smmu-v3 arm-smmu-v3.1.auto:  0x0000000000000000
arm-smmu-v3 arm-smmu-v3.1.auto:  0x0000000000000000
arm-smmu-v3 arm-smmu-v3.1.auto: event 0x10 received:
arm-smmu-v3 arm-smmu-v3.1.auto:  0x0000790000000010
arm-smmu-v3 arm-smmu-v3.1.auto:  0x0000120800000083
arm-smmu-v3 arm-smmu-v3.1.auto:  0x00000000000000c0
arm-smmu-v3 arm-smmu-v3.1.auto:  0x0000000000000000
arm-smmu-v3 arm-smmu-v3.1.auto: event 0x10 received:
arm-smmu-v3 arm-smmu-v3.1.auto:  0x0000790000000010
arm-smmu-v3 arm-smmu-v3.1.auto:  0x0000120800000081
arm-smmu-v3 arm-smmu-v3.1.auto:  0x0000000000000040
arm-smmu-v3 arm-smmu-v3.1.auto:  0x0000000000000000
arm-smmu-v3 arm-smmu-v3.1.auto: event 0x10 received:
arm-smmu-v3 arm-smmu-v3.1.auto:  0x0000790000000010
arm-smmu-v3 arm-smmu-v3.1.auto:  0x0000120800000082
arm-smmu-v3 arm-smmu-v3.1.auto:  0x0000000000000080
arm-smmu-v3 arm-smmu-v3.1.auto:  0x0000000000000000
hisi_hpre 0000:79:00.0: dat_rd_poison_int_set [error status=0x8] found
hisi_hpre 0000:79:00.0: ooo_rdrsp_err_int_set [error status=0xfc00] found
hisi_hpre 0000:79:00.0: Controller resetting...
hisi_hpre 0000:79:00.0: Controller reset complete
{2}[Hardware Error]: Hardware error from APEI Generic Hardware Error Source: 0
{2}[Hardware Error]: event severity: recoverable
{2}[Hardware Error]: Error 0, type: recoverable
{2}[Hardware Error]: section type: unknown, c8b328a8-9917-4af6-9a13-2e08ab2e7586
{2}[Hardware Error]: section length: 0x4c

as we didn't allocate memory for msg->in.

Fixes: c8b4b477079d("crypto: hisilicon - add HiSilicon HPRE accelerator")
Signed-off-by: Meng Yu <yumeng18@huawei.com>
---
 drivers/crypto/hisilicon/hpre/hpre_crypto.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Herbert Xu Sept. 18, 2020, 7:11 a.m. UTC | #1
On Thu, Sep 10, 2020 at 07:25:22PM +0800, Meng Yu wrote:
>

> diff --git a/drivers/crypto/hisilicon/hpre/hpre_crypto.c b/drivers/crypto/hisilicon/hpre/hpre_crypto.c

> index 0cbe99a1..2d91593 100644

> --- a/drivers/crypto/hisilicon/hpre/hpre_crypto.c

> +++ b/drivers/crypto/hisilicon/hpre/hpre_crypto.c

> @@ -528,6 +528,8 @@ static int hpre_dh_compute_value(struct kpp_request *req)

>  		ret = hpre_hw_data_init(hpre_req, req->src, req->src_len, 1, 1);

>  		if (unlikely(ret))

>  			goto clear_all;

> +	} else {

> +		msg->in = cpu_to_le64((u64)ctx->dh.dma_g);


Why do you need the u64 cast?

Cheers,
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
yumeng Sept. 18, 2020, 8:44 a.m. UTC | #2
Yes, 'u64' is redundant,  I will resend one!
                         Thank you!


On 2020/9/18 15:11, Herbert Xu wrote:
> On Thu, Sep 10, 2020 at 07:25:22PM +0800, Meng Yu wrote:

>>

>> diff --git a/drivers/crypto/hisilicon/hpre/hpre_crypto.c b/drivers/crypto/hisilicon/hpre/hpre_crypto.c

>> index 0cbe99a1..2d91593 100644

>> --- a/drivers/crypto/hisilicon/hpre/hpre_crypto.c

>> +++ b/drivers/crypto/hisilicon/hpre/hpre_crypto.c

>> @@ -528,6 +528,8 @@ static int hpre_dh_compute_value(struct kpp_request *req)

>>  		ret = hpre_hw_data_init(hpre_req, req->src, req->src_len, 1, 1);

>>  		if (unlikely(ret))

>>  			goto clear_all;

>> +	} else {

>> +		msg->in = cpu_to_le64((u64)ctx->dh.dma_g);

>

> Why do you need the u64 cast?

>

> Cheers,

>
diff mbox series

Patch

diff --git a/drivers/crypto/hisilicon/hpre/hpre_crypto.c b/drivers/crypto/hisilicon/hpre/hpre_crypto.c
index 0cbe99a1..2d91593 100644
--- a/drivers/crypto/hisilicon/hpre/hpre_crypto.c
+++ b/drivers/crypto/hisilicon/hpre/hpre_crypto.c
@@ -528,6 +528,8 @@  static int hpre_dh_compute_value(struct kpp_request *req)
 		ret = hpre_hw_data_init(hpre_req, req->src, req->src_len, 1, 1);
 		if (unlikely(ret))
 			goto clear_all;
+	} else {
+		msg->in = cpu_to_le64((u64)ctx->dh.dma_g);
 	}
 
 	ret = hpre_hw_data_init(hpre_req, req->dst, req->dst_len, 0, 1);