2023-01-10 13:55:08

by Vincent Whitchurch

[permalink] [raw]
Subject: [PATCH 02/12] crypto: axis - do not DMA to IV

The crypto API does not promise that the IV buffer is suitable for DMA.
Use an intermediate buffer instead.

Signed-off-by: Vincent Whitchurch <[email protected]>
---
drivers/crypto/axis/artpec6_crypto.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/crypto/axis/artpec6_crypto.c b/drivers/crypto/axis/artpec6_crypto.c
index 87af44ac3e64..d3b6ee065a81 100644
--- a/drivers/crypto/axis/artpec6_crypto.c
+++ b/drivers/crypto/axis/artpec6_crypto.c
@@ -321,6 +321,7 @@ struct artpec6_crypto_request_context {
u32 cipher_md;
bool decrypt;
struct artpec6_crypto_req_common common;
+ unsigned char iv_bounce[AES_BLOCK_SIZE] CRYPTO_MINALIGN_ATTR;
};

struct artpec6_cryptotfm_context {
@@ -1779,7 +1780,8 @@ static int artpec6_crypto_prepare_crypto(struct skcipher_request *areq)
return ret;

if (iv_len) {
- ret = artpec6_crypto_setup_out_descr(common, areq->iv, iv_len,
+ memcpy(req_ctx->iv_bounce, areq->iv, iv_len);
+ ret = artpec6_crypto_setup_out_descr(common, req_ctx->iv_bounce, iv_len,
false, false);
if (ret)
return ret;
--
2.34.1


2023-01-20 09:14:04

by Herbert Xu

[permalink] [raw]
Subject: Re: [PATCH 02/12] crypto: axis - do not DMA to IV

On Tue, Jan 10, 2023 at 02:50:32PM +0100, Vincent Whitchurch wrote:
> The crypto API does not promise that the IV buffer is suitable for DMA.
> Use an intermediate buffer instead.
>
> Signed-off-by: Vincent Whitchurch <[email protected]>
> ---
> drivers/crypto/axis/artpec6_crypto.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/crypto/axis/artpec6_crypto.c b/drivers/crypto/axis/artpec6_crypto.c
> index 87af44ac3e64..d3b6ee065a81 100644
> --- a/drivers/crypto/axis/artpec6_crypto.c
> +++ b/drivers/crypto/axis/artpec6_crypto.c
> @@ -321,6 +321,7 @@ struct artpec6_crypto_request_context {
> u32 cipher_md;
> bool decrypt;
> struct artpec6_crypto_req_common common;
> + unsigned char iv_bounce[AES_BLOCK_SIZE] CRYPTO_MINALIGN_ATTR;

Please use the newly introduced CRYPTO_DMA_ALIGN macro.

CRYPTO_MINALIGN only reflects minimum kmalloc alignment, which
may be less than that required for DMA. You're currently safe
on arm32, but we should not rely on this in new code.

Thanks,
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

2023-01-27 15:39:34

by Vincent Whitchurch

[permalink] [raw]
Subject: Re: [PATCH 02/12] crypto: axis - do not DMA to IV

On Fri, Jan 20, 2023 at 10:11:51AM +0100, Herbert Xu wrote:
> On Tue, Jan 10, 2023 at 02:50:32PM +0100, Vincent Whitchurch wrote:
> > + unsigned char iv_bounce[AES_BLOCK_SIZE] CRYPTO_MINALIGN_ATTR;
>
> Please use the newly introduced CRYPTO_DMA_ALIGN macro.
>
> CRYPTO_MINALIGN only reflects minimum kmalloc alignment, which
> may be less than that required for DMA. You're currently safe
> on arm32, but we should not rely on this in new code.

Thanks, I'll fix this in v2. Should we add a CRYPTO_DMA_ALIGN_ATTR
macro similar to CRYPTO_MINALIGN_ATTR?

2023-01-30 07:29:55

by Herbert Xu

[permalink] [raw]
Subject: Re: [PATCH 02/12] crypto: axis - do not DMA to IV

On Fri, Jan 27, 2023 at 04:39:23PM +0100, Vincent Whitchurch wrote:
>
> Thanks, I'll fix this in v2. Should we add a CRYPTO_DMA_ALIGN_ATTR
> macro similar to CRYPTO_MINALIGN_ATTR?

Sure we could do that.

Cheers,
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt