Re: [PATCH] crypto: atmel-tdes - sync output bounce buffer before DMA
From: Thorsten Blum
Date: Wed Sep 02 2026 - 14:46:48 EST
On Sat, Aug 29, 2026 at 06:53:16AM +0200, Karl Mehltretter wrote:
> The slow path DMAs into a bounce buffer mapped once at probe with
> DMA_FROM_DEVICE. On reuse, nothing invalidates the CPU cache for it
> before the DMA writes, so the copy-out can read stale data.
>
> This was hidden by the copy-out calling dma_sync_single_for_device()
> instead of dma_sync_single_for_cpu(): on ARM the misplaced for_device call
> invalidates the cache, which is exactly what the missing pre-DMA sync
> should have done. Commit c8a9a647532f ("crypto: atmel-tdes - fix DMA sync
> direction") corrected that call. On ARM926 dma_unmap_area is a no-op, so
> for_cpu does not invalidate and the SAM9X60 and SAM9X7 parts lost their
> only invalidate.
>
> With CONFIG_CRYPTO_SELFTESTS=y all four DES/TDES algorithms now fail on
> SAM9X75:
>
> alg: skcipher: atmel-ecb-tdes encryption test failed (wrong result) on
> test vector 2, cfg="unaligned buffer, offset=1"
>
> Sync the output buffer for the device before starting the DMA, in both
> the PDC and DMA engine paths.
>
> Fixes: c8a9a647532f ("crypto: atmel-tdes - fix DMA sync direction")
> Cc: stable@xxxxxxxxxxxxxxx
> Assisted-by: LLM
> Signed-off-by: Karl Mehltretter <kmehltretter@xxxxxxxxx>
> ---
> Tested on top of:
>
> crypto: atmel-tdes - zero-initialize device state
> https://lore.kernel.org/r/20260829035821.67220-1-kmehltretter@xxxxxxxxx/
>
> Without that fix, on the tested SAM9X75 the DES/TDES self-tests hang on
> their first requests before reaching this test vector, so the failure
> fixed here is not observable on an otherwise unpatched tree.
>
> The two patches are independent and apply in either order.
>
> drivers/crypto/atmel-tdes.c | 4 ++++
> 1 file changed, 4 insertions(+)
The code change looks correct to me.
However, I find the first two paragraphs of the changelog difficult to
understand. Could you please reword those and consistently use full
function names with trailing parentheses?
Thanks,
Thorsten