Commit 93fa0af4 authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Mark Brown

ASoC: cros_ec_codec: switch to library API for SHA-256

The CrOS EC codec driver uses SHA-256 explicitly, and not in a
performance critical manner, so there is really no point in using
the SHASH crypto API here. Let's switch to the library API instead.
Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
Reviewed-by: default avatarTzung-Bi Shih <tzungbi@google.com>
Cc: Cheng-Yi Chiang <cychiang@chromium.org>
Cc: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Cc: Guenter Roeck <groeck@chromium.org>
Cc: Benson Leung <bleung@chromium.org>
Cc: Liam Girdwood <lgirdwood@gmail.com>
Cc: Mark Brown <broonie@kernel.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Eric Biggers <ebiggers@kernel.org>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Tzung-Bi Shih <tzungbi@google.com>
Link: https://lore.kernel.org/r/20200515100309.20795-1-ardb@kernel.orgSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 5ae5eb48
...@@ -538,8 +538,7 @@ config SND_SOC_CQ0093VC ...@@ -538,8 +538,7 @@ config SND_SOC_CQ0093VC
config SND_SOC_CROS_EC_CODEC config SND_SOC_CROS_EC_CODEC
tristate "codec driver for ChromeOS EC" tristate "codec driver for ChromeOS EC"
depends on CROS_EC depends on CROS_EC
select CRYPTO select CRYPTO_LIB_SHA256
select CRYPTO_SHA256
help help
If you say yes here you will get support for the If you say yes here you will get support for the
ChromeOS Embedded Controller's Audio Codec. ChromeOS Embedded Controller's Audio Codec.
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
* EC for audio function. * EC for audio function.
*/ */
#include <crypto/hash.h>
#include <crypto/sha.h> #include <crypto/sha.h>
#include <linux/acpi.h> #include <linux/acpi.h>
#include <linux/delay.h> #include <linux/delay.h>
...@@ -107,25 +106,11 @@ static int send_ec_host_command(struct cros_ec_device *ec_dev, uint32_t cmd, ...@@ -107,25 +106,11 @@ static int send_ec_host_command(struct cros_ec_device *ec_dev, uint32_t cmd,
static int calculate_sha256(struct cros_ec_codec_priv *priv, static int calculate_sha256(struct cros_ec_codec_priv *priv,
uint8_t *buf, uint32_t size, uint8_t *digest) uint8_t *buf, uint32_t size, uint8_t *digest)
{ {
struct crypto_shash *tfm; struct sha256_state sctx;
struct shash_desc *desc;
tfm = crypto_alloc_shash("sha256", CRYPTO_ALG_TYPE_SHASH, 0); sha256_init(&sctx);
if (IS_ERR(tfm)) { sha256_update(&sctx, buf, size);
dev_err(priv->dev, "can't alloc shash\n"); sha256_final(&sctx, digest);
return PTR_ERR(tfm);
}
desc = kmalloc(sizeof(*desc) + crypto_shash_descsize(tfm), GFP_KERNEL);
if (!desc) {
crypto_free_shash(tfm);
return -ENOMEM;
}
desc->tfm = tfm;
crypto_shash_digest(desc, buf, size, digest);
shash_desc_zero(desc);
kfree(desc);
crypto_free_shash(tfm);
#ifdef DEBUG #ifdef DEBUG
{ {
......
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