Re: [PATCHv2] crypto: cesa: check for sram_dma error

Robin Murphy <[email protected]> Mon, 27 Jul 2026 13:37:24 +0100
Newsgroups org.kernel.vger.linux-crypto,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
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 <[email protected]>
> ---
>   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);
>   }