• Horia Geantă's avatar
    crypto: caam - fix echainiv(authenc) encrypt shared descriptor · 1d2d87e8
    Horia Geantă authored
    There are a few things missed by the conversion to the
    new AEAD interface:
    1 - echainiv(authenc) encrypt shared descriptor
    The shared descriptor is incorrect: due to the order of operations,
    at some point in time MATH3 register is being overwritten.
    2 - buffer used for echainiv(authenc) encrypt shared descriptor
    Encrypt and givencrypt shared descriptors (for AEAD ops) are mutually
    exclusive and thus use the same buffer in context state: sh_desc_enc.
    However, there's one place missed by s/sh_desc_givenc/sh_desc_enc,
    leading to errors when echainiv(authenc(...)) algorithms are used:
    DECO: desc idx 14: Header Error. Invalid length or parity, or
    certain other problems.
    While here, also fix a typo: dma_mapping_error() is checking
    for validity of sh_desc_givenc_dma instead of sh_desc_enc_dma.
    Cc: <stable@vger.kernel.org> # 4.3+
    Fixes: 479bcc7c
     ("crypto: caam - Convert authenc to new AEAD interface")
    Signed-off-by: default avatarHoria Geantă <horia.geanta@nxp.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
caamalg.c 128 KB