aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHoria Geantă <horia.geanta@nxp.com>2017-02-10 07:07:21 -0500
committerHerbert Xu <herbert@gondor.apana.org.au>2017-02-15 00:23:41 -0500
commitcfb725f6d3d31355fa4510da7d7bdce807045b42 (patch)
treee9f5e9aabec67ca96d1653b7a5e38b3a526e9325
parent838e0a89e33a6e15492b8e4d700fc64c21ca3587 (diff)
crypto: caam - don't dma_map key for hash algorithms
Shared descriptors for hash algorithms are small enough for (split) keys to be inlined in all cases. Since driver already does this, all what's left is to remove unused ctx->key_dma. Fixes: 045e36780f115 ("crypto: caam - ahash hmac support") Signed-off-by: Horia Geantă <horia.geanta@nxp.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--drivers/crypto/caam/caamhash.c18
1 files changed, 1 insertions, 17 deletions
diff --git a/drivers/crypto/caam/caamhash.c b/drivers/crypto/caam/caamhash.c
index e58639ea53b1..117bbd8c08d4 100644
--- a/drivers/crypto/caam/caamhash.c
+++ b/drivers/crypto/caam/caamhash.c
@@ -109,7 +109,6 @@ struct caam_hash_ctx {
109 dma_addr_t sh_desc_digest_dma; 109 dma_addr_t sh_desc_digest_dma;
110 struct device *jrdev; 110 struct device *jrdev;
111 u8 key[CAAM_MAX_HASH_KEY_SIZE]; 111 u8 key[CAAM_MAX_HASH_KEY_SIZE];
112 dma_addr_t key_dma;
113 int ctx_len; 112 int ctx_len;
114 struct alginfo adata; 113 struct alginfo adata;
115}; 114};
@@ -420,7 +419,6 @@ static int ahash_setkey(struct crypto_ahash *ahash,
420 const u8 *key, unsigned int keylen) 419 const u8 *key, unsigned int keylen)
421{ 420{
422 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash); 421 struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
423 struct device *jrdev = ctx->jrdev;
424 int blocksize = crypto_tfm_alg_blocksize(&ahash->base); 422 int blocksize = crypto_tfm_alg_blocksize(&ahash->base);
425 int digestsize = crypto_ahash_digestsize(ahash); 423 int digestsize = crypto_ahash_digestsize(ahash);
426 int ret; 424 int ret;
@@ -448,28 +446,14 @@ static int ahash_setkey(struct crypto_ahash *ahash,
448 if (ret) 446 if (ret)
449 goto bad_free_key; 447 goto bad_free_key;
450 448
451 ctx->key_dma = dma_map_single(jrdev, ctx->key, ctx->adata.keylen_pad,
452 DMA_TO_DEVICE);
453 if (dma_mapping_error(jrdev, ctx->key_dma)) {
454 dev_err(jrdev, "unable to map key i/o memory\n");
455 ret = -ENOMEM;
456 goto error_free_key;
457 }
458#ifdef DEBUG 449#ifdef DEBUG
459 print_hex_dump(KERN_ERR, "ctx.key@"__stringify(__LINE__)": ", 450 print_hex_dump(KERN_ERR, "ctx.key@"__stringify(__LINE__)": ",
460 DUMP_PREFIX_ADDRESS, 16, 4, ctx->key, 451 DUMP_PREFIX_ADDRESS, 16, 4, ctx->key,
461 ctx->adata.keylen_pad, 1); 452 ctx->adata.keylen_pad, 1);
462#endif 453#endif
463 454
464 ret = ahash_set_sh_desc(ahash);
465 if (ret) {
466 dma_unmap_single(jrdev, ctx->key_dma, ctx->adata.keylen_pad,
467 DMA_TO_DEVICE);
468 }
469
470 error_free_key:
471 kfree(hashed_key); 455 kfree(hashed_key);
472 return ret; 456 return ahash_set_sh_desc(ahash);
473 bad_free_key: 457 bad_free_key:
474 kfree(hashed_key); 458 kfree(hashed_key);
475 crypto_ahash_set_flags(ahash, CRYPTO_TFM_RES_BAD_KEY_LEN); 459 crypto_ahash_set_flags(ahash, CRYPTO_TFM_RES_BAD_KEY_LEN);