mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCHv2] crypto: cesa: check for sram_dma error
@ 2026-07-17 22:58 Rosen Penev
  2026-07-27  0:25 ` Herbert Xu
  2026-07-27 12:37 ` Robin Murphy
  0 siblings, 2 replies; 3+ messages in thread
From: Rosen Penev @ 2026-07-17 22:58 UTC (permalink / raw)
  To: linux-crypto
  Cc: Srujana Challa, Bharat Bhushan, Herbert Xu, David S. Miller,
	Boris Brezillon, Robin Murphy, open list

dma_map_resource() might fail. In such a case, don't call
dma_unmap_resource()

Fixes: 37d728f76c41 ("crypto: marvell/cesa - Fix DMA API misuse")
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 v2: use dma_mapping_error(). Fix Fixes tag.
 drivers/crypto/marvell/cesa/cesa.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/crypto/marvell/cesa/cesa.c b/drivers/crypto/marvell/cesa/cesa.c
index 75d8ba23d9a2..92e977027c8a 100644
--- a/drivers/crypto/marvell/cesa/cesa.c
+++ b/drivers/crypto/marvell/cesa/cesa.c
@@ -406,7 +406,8 @@ static void mv_cesa_put_sram(struct platform_device *pdev, int idx)
 	if (engine->pool)
 		gen_pool_free(engine->pool, (unsigned long)engine->sram_pool,
 			      cesa->sram_size);
-	else
+	else if (engine->sram &&
+		 !dma_mapping_error(cesa->dev, engine->sram_dma))
 		dma_unmap_resource(cesa->dev, engine->sram_dma,
 				   cesa->sram_size, DMA_BIDIRECTIONAL, 0);
 }
-- 
2.55.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCHv2] crypto: cesa: check for sram_dma error
  2026-07-17 22:58 [PATCHv2] crypto: cesa: check for sram_dma error Rosen Penev
@ 2026-07-27  0:25 ` Herbert Xu
  2026-07-27 12:37 ` Robin Murphy
  1 sibling, 0 replies; 3+ messages in thread
From: Herbert Xu @ 2026-07-27  0:25 UTC (permalink / raw)
  To: Rosen Penev
  Cc: linux-crypto, Srujana Challa, Bharat Bhushan, David S. Miller,
	Boris Brezillon, Robin Murphy, open list

On Fri, Jul 17, 2026 at 03:58:31PM -0700, Rosen Penev wrote:
> dma_map_resource() might fail. In such a case, don't call
> dma_unmap_resource()
> 
> Fixes: 37d728f76c41 ("crypto: marvell/cesa - Fix DMA API misuse")
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
> ---
>  v2: use dma_mapping_error(). Fix Fixes tag.
>  drivers/crypto/marvell/cesa/cesa.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)

I think it would be better to fix mv_cesa_probe to not call the
cleanup functions on uninitialised engines.

err_cleanup:
	for (i = 0; i < XXX; i++)
		mv_cesa_put_sram(pdev, i);

So replace XXX here with one past the last index that was successfully
initialised.

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCHv2] crypto: cesa: check for sram_dma error
  2026-07-17 22:58 [PATCHv2] crypto: cesa: check for sram_dma error Rosen Penev
  2026-07-27  0:25 ` Herbert Xu
@ 2026-07-27 12:37 ` Robin Murphy
  1 sibling, 0 replies; 3+ messages in thread
From: Robin Murphy @ 2026-07-27 12:37 UTC (permalink / raw)
  To: Rosen Penev, linux-crypto
  Cc: Srujana Challa, Bharat Bhushan, Herbert Xu, David S. Miller,
	Boris Brezillon, open list

On 17/07/2026 11:58 pm, Rosen Penev wrote:
> dma_map_resource() might fail. In such a case, don't call
> dma_unmap_resource()
> 
> Fixes: 37d728f76c41 ("crypto: marvell/cesa - Fix DMA API misuse")
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
> ---
>   v2: use dma_mapping_error(). Fix Fixes tag.
>   drivers/crypto/marvell/cesa/cesa.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/crypto/marvell/cesa/cesa.c b/drivers/crypto/marvell/cesa/cesa.c
> index 75d8ba23d9a2..92e977027c8a 100644
> --- a/drivers/crypto/marvell/cesa/cesa.c
> +++ b/drivers/crypto/marvell/cesa/cesa.c
> @@ -406,7 +406,8 @@ static void mv_cesa_put_sram(struct platform_device *pdev, int idx)
>   	if (engine->pool)
>   		gen_pool_free(engine->pool, (unsigned long)engine->sram_pool,
>   			      cesa->sram_size);
> -	else
> +	else if (engine->sram &&

This is still not quite right if the 
devm_platform_get_and_ioremap_resource() call fails, since engine->sram 
will then be non-NULL (an ERR_PTR value), but engine->sram_dma is still 
untouched, and dma_mapping_error(0) is (usually) false.

Thanks,
Robin.

> +		 !dma_mapping_error(cesa->dev, engine->sram_dma))
>   		dma_unmap_resource(cesa->dev, engine->sram_dma,
>   				   cesa->sram_size, DMA_BIDIRECTIONAL, 0);
>   }


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-07-27 12:37 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-17 22:58 [PATCHv2] crypto: cesa: check for sram_dma error Rosen Penev
2026-07-27  0:25 ` Herbert Xu
2026-07-27 12:37 ` Robin Murphy

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®