2023-02-06 06:02:02

by Herbert Xu

[permalink] [raw]
Subject: [PATCH] crypto: crypto4xx - Call dma_unmap_page when done

In crypto4xx_cipher_done, we should be unmapping the dst page, not
mapping it.

This was flagged by a sparse warning about the unused addr variable.
While we're at it, also fix a sparse warning regarding the unused
ctx variable in crypto4xx_ahash_done (by actually using it).

Fixes: 049359d65527 ("crypto: amcc - Add crypt4xx driver")
Signed-off-by: Herbert Xu <[email protected]>

diff --git a/drivers/crypto/amcc/crypto4xx_core.c b/drivers/crypto/amcc/crypto4xx_core.c
index 3a9d0ab41f32..17deef864dd2 100644
--- a/drivers/crypto/amcc/crypto4xx_core.c
+++ b/drivers/crypto/amcc/crypto4xx_core.c
@@ -523,7 +523,6 @@ static void crypto4xx_cipher_done(struct crypto4xx_device *dev,
{
struct skcipher_request *req;
struct scatterlist *dst;
- dma_addr_t addr;

req = skcipher_request_cast(pd_uinfo->async_req);

@@ -532,8 +531,8 @@ static void crypto4xx_cipher_done(struct crypto4xx_device *dev,
req->cryptlen, req->dst);
} else {
dst = pd_uinfo->dest_va;
- addr = dma_map_page(dev->core_dev->device, sg_page(dst),
- dst->offset, dst->length, DMA_FROM_DEVICE);
+ dma_unmap_page(dev->core_dev->device, pd->dest, dst->length,
+ DMA_FROM_DEVICE);
}

if (pd_uinfo->sa_va->sa_command_0.bf.save_iv == SA_SAVE_IV) {
@@ -558,10 +557,9 @@ static void crypto4xx_ahash_done(struct crypto4xx_device *dev,
struct ahash_request *ahash_req;

ahash_req = ahash_request_cast(pd_uinfo->async_req);
- ctx = crypto_tfm_ctx(ahash_req->base.tfm);
+ ctx = crypto_ahash_ctx(crypto_ahash_reqtfm(ahash_req));

- crypto4xx_copy_digest_to_dst(ahash_req->result, pd_uinfo,
- crypto_tfm_ctx(ahash_req->base.tfm));
+ crypto4xx_copy_digest_to_dst(ahash_req->result, pd_uinfo, ctx);
crypto4xx_ret_sg_desc(dev, pd_uinfo);

if (pd_uinfo->state & PD_ENTRY_BUSY)
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt


2023-02-08 19:04:17

by Christian Lamparter

[permalink] [raw]
Subject: Re: [PATCH] crypto: crypto4xx - Call dma_unmap_page when done

On 2/6/23 07:01, Herbert Xu wrote:
> In crypto4xx_cipher_done, we should be unmapping the dst page, not
> mapping it.
>
> This was flagged by a sparse warning about the unused addr variable.
> While we're at it, also fix a sparse warning regarding the unused
> ctx variable in crypto4xx_ahash_done (by actually using it).
>
> Fixes: 049359d65527 ("crypto: amcc - Add crypt4xx driver")
> Signed-off-by: Herbert Xu <[email protected]>

Tested this on the MyBook Live. Internal cryptmgr_test pass with:

[ 2.888784] alg: No test for stdrng (crypto4xx_rng)
[ 7.519740] "cryptomgr_test" (102) uses obsolete ecb(arc4) skcipher
(but all crypto4xx entries in /proc/crypto say that the selftest pass)

as well as libkcapi kcapi-enc-test.sh passes.

The ahash portion is a bit "underused". Currently the driver doesn't
register any hashes (this is because in testing I found the getting
the crypto-hardware to do those is so much slower than letting the
CPU do these).

Anyway:

Tested-by: Christian Lamparter <[email protected]>

Thanks!