Commit 57cfda1a authored by Romain Perier's avatar Romain Perier Committed by Herbert Xu

crypto: marvell - Don't overwrite default creq->state during initialization

Currently, in mv_cesa_{md5,sha1,sha256}_init creq->state is initialized
before the call to mv_cesa_ahash_init. This is wrong because this
function fills creq with zero by using memset, so its 'state' that
contains the default DIGEST is overwritten. This commit fixes the issue
by initializing creq->state just after the call to mv_cesa_ahash_init.

Fixes: commit b0ef5106 ("crypto: marvell/cesa - initialize hash...")
Signed-off-by: default avatarRomain Perier <romain.perier@free-electrons.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 09951d83
...@@ -800,13 +800,14 @@ static int mv_cesa_md5_init(struct ahash_request *req) ...@@ -800,13 +800,14 @@ static int mv_cesa_md5_init(struct ahash_request *req)
struct mv_cesa_op_ctx tmpl = { }; struct mv_cesa_op_ctx tmpl = { };
mv_cesa_set_op_cfg(&tmpl, CESA_SA_DESC_CFG_MACM_MD5); mv_cesa_set_op_cfg(&tmpl, CESA_SA_DESC_CFG_MACM_MD5);
mv_cesa_ahash_init(req, &tmpl, true);
creq->state[0] = MD5_H0; creq->state[0] = MD5_H0;
creq->state[1] = MD5_H1; creq->state[1] = MD5_H1;
creq->state[2] = MD5_H2; creq->state[2] = MD5_H2;
creq->state[3] = MD5_H3; creq->state[3] = MD5_H3;
mv_cesa_ahash_init(req, &tmpl, true);
return 0; return 0;
} }
...@@ -868,14 +869,15 @@ static int mv_cesa_sha1_init(struct ahash_request *req) ...@@ -868,14 +869,15 @@ static int mv_cesa_sha1_init(struct ahash_request *req)
struct mv_cesa_op_ctx tmpl = { }; struct mv_cesa_op_ctx tmpl = { };
mv_cesa_set_op_cfg(&tmpl, CESA_SA_DESC_CFG_MACM_SHA1); mv_cesa_set_op_cfg(&tmpl, CESA_SA_DESC_CFG_MACM_SHA1);
mv_cesa_ahash_init(req, &tmpl, false);
creq->state[0] = SHA1_H0; creq->state[0] = SHA1_H0;
creq->state[1] = SHA1_H1; creq->state[1] = SHA1_H1;
creq->state[2] = SHA1_H2; creq->state[2] = SHA1_H2;
creq->state[3] = SHA1_H3; creq->state[3] = SHA1_H3;
creq->state[4] = SHA1_H4; creq->state[4] = SHA1_H4;
mv_cesa_ahash_init(req, &tmpl, false);
return 0; return 0;
} }
...@@ -937,6 +939,9 @@ static int mv_cesa_sha256_init(struct ahash_request *req) ...@@ -937,6 +939,9 @@ static int mv_cesa_sha256_init(struct ahash_request *req)
struct mv_cesa_op_ctx tmpl = { }; struct mv_cesa_op_ctx tmpl = { };
mv_cesa_set_op_cfg(&tmpl, CESA_SA_DESC_CFG_MACM_SHA256); mv_cesa_set_op_cfg(&tmpl, CESA_SA_DESC_CFG_MACM_SHA256);
mv_cesa_ahash_init(req, &tmpl, false);
creq->state[0] = SHA256_H0; creq->state[0] = SHA256_H0;
creq->state[1] = SHA256_H1; creq->state[1] = SHA256_H1;
creq->state[2] = SHA256_H2; creq->state[2] = SHA256_H2;
...@@ -946,8 +951,6 @@ static int mv_cesa_sha256_init(struct ahash_request *req) ...@@ -946,8 +951,6 @@ static int mv_cesa_sha256_init(struct ahash_request *req)
creq->state[6] = SHA256_H6; creq->state[6] = SHA256_H6;
creq->state[7] = SHA256_H7; creq->state[7] = SHA256_H7;
mv_cesa_ahash_init(req, &tmpl, false);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment