Skip to content

Commit b0ef510

Browse files
Boris BREZILLONherbertx
authored andcommitted
crypto: marvell/cesa - initialize hash states
->export() might be called before we have done an update operation, and in this case the ->state field is left uninitialized. Put the correct default value when initializing the request. Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
1 parent 7850c91 commit b0ef510

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

drivers/crypto/marvell/hash.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -810,9 +810,14 @@ static int mv_cesa_ahash_import(struct ahash_request *req, const void *hash,
810810

811811
static int mv_cesa_md5_init(struct ahash_request *req)
812812
{
813+
struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
813814
struct mv_cesa_op_ctx tmpl = { };
814815

815816
mv_cesa_set_op_cfg(&tmpl, CESA_SA_DESC_CFG_MACM_MD5);
817+
creq->state[0] = MD5_H0;
818+
creq->state[1] = MD5_H1;
819+
creq->state[2] = MD5_H2;
820+
creq->state[3] = MD5_H3;
816821

817822
mv_cesa_ahash_init(req, &tmpl, true);
818823

@@ -873,9 +878,15 @@ struct ahash_alg mv_md5_alg = {
873878

874879
static int mv_cesa_sha1_init(struct ahash_request *req)
875880
{
881+
struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
876882
struct mv_cesa_op_ctx tmpl = { };
877883

878884
mv_cesa_set_op_cfg(&tmpl, CESA_SA_DESC_CFG_MACM_SHA1);
885+
creq->state[0] = SHA1_H0;
886+
creq->state[1] = SHA1_H1;
887+
creq->state[2] = SHA1_H2;
888+
creq->state[3] = SHA1_H3;
889+
creq->state[4] = SHA1_H4;
879890

880891
mv_cesa_ahash_init(req, &tmpl, false);
881892

@@ -936,9 +947,18 @@ struct ahash_alg mv_sha1_alg = {
936947

937948
static int mv_cesa_sha256_init(struct ahash_request *req)
938949
{
950+
struct mv_cesa_ahash_req *creq = ahash_request_ctx(req);
939951
struct mv_cesa_op_ctx tmpl = { };
940952

941953
mv_cesa_set_op_cfg(&tmpl, CESA_SA_DESC_CFG_MACM_SHA256);
954+
creq->state[0] = SHA256_H0;
955+
creq->state[1] = SHA256_H1;
956+
creq->state[2] = SHA256_H2;
957+
creq->state[3] = SHA256_H3;
958+
creq->state[4] = SHA256_H4;
959+
creq->state[5] = SHA256_H5;
960+
creq->state[6] = SHA256_H6;
961+
creq->state[7] = SHA256_H7;
942962

943963
mv_cesa_ahash_init(req, &tmpl, false);
944964

0 commit comments

Comments
 (0)