crypto: n2 - add missing hash statesize
authorCorentin Labbe <clabbe@baylibre.com>
Thu, 6 Oct 2022 04:34:19 +0000 (04:34 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 7 Jan 2023 11:07:37 +0000 (12:07 +0100)
commit 76a4e874593543a2dff91d249c95bac728df2774 upstream.

Add missing statesize to hash templates.
This is mandatory otherwise no algorithms can be registered as the core
requires statesize to be set.

CC: stable@kernel.org # 4.3+
Reported-by: Rolf Eike Beer <eike-kernel@sf-tec.de>
Tested-by: Rolf Eike Beer <eike-kernel@sf-tec.de>
Fixes: 0a625fd2abaa ("crypto: n2 - Add Niagara2 crypto driver")
Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/crypto/n2_core.c

index b365ad78ac27accff12e0ad9099cf92cb75bc84a..e06774968fbbcab71d1c6370bee754b29d7805a6 100644 (file)
@@ -1271,6 +1271,7 @@ struct n2_hash_tmpl {
        const u32       *hash_init;
        u8              hw_op_hashsz;
        u8              digest_size;
+       u8              statesize;
        u8              block_size;
        u8              auth_type;
        u8              hmac_type;
@@ -1302,6 +1303,7 @@ static const struct n2_hash_tmpl hash_tmpls[] = {
          .hmac_type    = AUTH_TYPE_HMAC_MD5,
          .hw_op_hashsz = MD5_DIGEST_SIZE,
          .digest_size  = MD5_DIGEST_SIZE,
+         .statesize    = sizeof(struct md5_state),
          .block_size   = MD5_HMAC_BLOCK_SIZE },
        { .name         = "sha1",
          .hash_zero    = sha1_zero_message_hash,
@@ -1310,6 +1312,7 @@ static const struct n2_hash_tmpl hash_tmpls[] = {
          .hmac_type    = AUTH_TYPE_HMAC_SHA1,
          .hw_op_hashsz = SHA1_DIGEST_SIZE,
          .digest_size  = SHA1_DIGEST_SIZE,
+         .statesize    = sizeof(struct sha1_state),
          .block_size   = SHA1_BLOCK_SIZE },
        { .name         = "sha256",
          .hash_zero    = sha256_zero_message_hash,
@@ -1318,6 +1321,7 @@ static const struct n2_hash_tmpl hash_tmpls[] = {
          .hmac_type    = AUTH_TYPE_HMAC_SHA256,
          .hw_op_hashsz = SHA256_DIGEST_SIZE,
          .digest_size  = SHA256_DIGEST_SIZE,
+         .statesize    = sizeof(struct sha256_state),
          .block_size   = SHA256_BLOCK_SIZE },
        { .name         = "sha224",
          .hash_zero    = sha224_zero_message_hash,
@@ -1326,6 +1330,7 @@ static const struct n2_hash_tmpl hash_tmpls[] = {
          .hmac_type    = AUTH_TYPE_RESERVED,
          .hw_op_hashsz = SHA256_DIGEST_SIZE,
          .digest_size  = SHA224_DIGEST_SIZE,
+         .statesize    = sizeof(struct sha256_state),
          .block_size   = SHA224_BLOCK_SIZE },
 };
 #define NUM_HASH_TMPLS ARRAY_SIZE(hash_tmpls)
@@ -1465,6 +1470,7 @@ static int __n2_register_one_ahash(const struct n2_hash_tmpl *tmpl)
 
        halg = &ahash->halg;
        halg->digestsize = tmpl->digest_size;
+       halg->statesize = tmpl->statesize;
 
        base = &halg->base;
        snprintf(base->cra_name, CRYPTO_MAX_ALG_NAME, "%s", tmpl->name);