]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
nvme-auth: use crypto_shash_tfm_digest()
authorEric Biggers <ebiggers@google.com>
Sun, 29 Oct 2023 05:00:40 +0000 (22:00 -0700)
committerKeith Busch <kbusch@kernel.org>
Mon, 6 Nov 2023 16:05:53 +0000 (08:05 -0800)
Simplify nvme_auth_augmented_challenge() by using
crypto_shash_tfm_digest() instead of an alloc+init+update+final
sequence.  This should also improve performance.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/common/auth.c

index a8e87dfbeab2a41a9c73f8c880f709fc0fc830fb..a23ab5c968b9457bee89f14cc1f158e377ffa084 100644 (file)
@@ -341,7 +341,6 @@ int nvme_auth_augmented_challenge(u8 hmac_id, u8 *skey, size_t skey_len,
                u8 *challenge, u8 *aug, size_t hlen)
 {
        struct crypto_shash *tfm;
-       struct shash_desc *desc;
        u8 *hashed_key;
        const char *hmac_name;
        int ret;
@@ -369,29 +368,11 @@ int nvme_auth_augmented_challenge(u8 hmac_id, u8 *skey, size_t skey_len,
                goto out_free_key;
        }
 
-       desc = kmalloc(sizeof(struct shash_desc) + crypto_shash_descsize(tfm),
-                      GFP_KERNEL);
-       if (!desc) {
-               ret = -ENOMEM;
-               goto out_free_hash;
-       }
-       desc->tfm = tfm;
-
        ret = crypto_shash_setkey(tfm, hashed_key, hlen);
        if (ret)
-               goto out_free_desc;
-
-       ret = crypto_shash_init(desc);
-       if (ret)
-               goto out_free_desc;
-
-       ret = crypto_shash_update(desc, challenge, hlen);
-       if (ret)
-               goto out_free_desc;
+               goto out_free_hash;
 
-       ret = crypto_shash_final(desc, aug);
-out_free_desc:
-       kfree_sensitive(desc);
+       ret = crypto_shash_tfm_digest(tfm, challenge, hlen, aug);
 out_free_hash:
        crypto_free_shash(tfm);
 out_free_key: