crypto: caam - fix echainiv(authenc) encrypt shared descriptor
authorHoria Geantă <horia.geanta@nxp.com>
Thu, 4 Aug 2016 17:02:46 +0000 (20:02 +0300)
committerHerbert Xu <herbert@gondor.apana.org.au>
Mon, 8 Aug 2016 15:43:49 +0000 (23:43 +0800)
commit1d2d87e81ea21f64c19b95ef228b865a6880e17e
tree0a0d36e51f1e0456d1f1f9cf4600eb9aa7bbb96d
parentf743e70e8f8f3200dde1dcf50c14aa2900d65071
crypto: caam - fix echainiv(authenc) encrypt shared descriptor

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: 479bcc7c5b9e ("crypto: caam - Convert authenc to new AEAD interface")
Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/caam/caamalg.c