[PATCH] crypto: atmel-tdes - sync output bounce buffer before DMA
Thorsten Blum
thorsten.blum at linux.dev
Wed Sep 2 10:16:57 PDT 2026
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 at vger.kernel.org
> Assisted-by: LLM
> Signed-off-by: Karl Mehltretter <kmehltretter at gmail.com>
> ---
> Tested on top of:
>
> crypto: atmel-tdes - zero-initialize device state
> https://lore.kernel.org/r/20260829035821.67220-1-kmehltretter@gmail.com/
>
> 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
More information about the linux-arm-kernel
mailing list