Re: [PATCH crypto 2/2] crypto: safexcel - Map AEAD buffers with accurate DMA directions

From: Ralf Lici

Date: Wed Sep 23 2026 - 05:48:42 EST


On Wed, 23 Sep 2026 18:32:25 +1000, Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> wrote:
> On Wed, Sep 23, 2026 at 09:26:46AM +0200, Ralf Lici wrote:
> >
> > No, the regions do not need to occupy separate sg entries, the patch
> > selects the direction conservatively for the whole entry.
> >
> > For a completely linear in-place request, the entry overlaps the output
> > range and is therefore mapped DMA_BIDIRECTIONAL. For an out-of-place
> > request, the source is mapped DMA_TO_DEVICE. For example, a single
> > destination entry covering:
> >
> > [ AAD | ciphertext | tag ]
> >
> > has a logical output range covering only:
> >
> > [ ciphertext | tag ]
> >
> > Since the entry also contains the preserved AAD prefix, it is classified
> > as mixed and mapped DMA_BIDIRECTIONAL. The same applies if an entry
> > extends beyond the end of the output range.
>
> Wait, I think this suggests that the caller is giving us bogus
> input.
>
> If the input is out-of-place, it shouldn't contain overlapping
> data.
>
> Which caller is this?
>
> Thanks,
> --
> Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
> Home Page: http://gondor.apana.org.au/~herbert/
> PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
>

Sorry, that was a misunderstanding, used "overlap" poorly. I only meant
that one sg entry can contain both the reserved AAD prefix and the bytes
written by the device. I did not mean that the source and destination
share memory.

There is no caller to identify for that particular single-entry layout,
it was only a hypothetical example in response to your question. Even
for out-of-place AEAD, the destination starts with space reserved for
the associated data (as documented in the comment at the top of
include/crypto/aead.h). A single linear destination entry can therefore
contain both that reserved prefix, which the device does not write, and
the ciphertext and tag, which it does write. Because the DMA direction
applies to the whole entry, such a mixed entry is mapped
DMA_BIDIRECTIONAL.

--
Ralf Lici
Mandelbit Srl