linux/drivers/crypto/caam
Ard Biesheuvel ed527b13d8 crypto: caam - limit output IV to CBC to work around CTR mode DMA issue
The CAAM driver currently violates an undocumented and slightly
controversial requirement imposed by the crypto stack that a buffer
referred to by the request structure via its virtual address may not
be modified while any scatterlists passed via the same request
structure are mapped for inbound DMA.

This may result in errors like

  alg: aead: decryption failed on test 1 for gcm_base(ctr-aes-caam,ghash-generic): ret=74
  alg: aead: Failed to load transform for gcm(aes): -2

on non-cache coherent systems, due to the fact that the GCM driver
passes an IV buffer by virtual address which shares a cacheline with
the auth_tag buffer passed via a scatterlist, resulting in corruption
of the auth_tag when the IV is updated while the DMA mapping is live.

Since the IV that is returned to the caller is only valid for CBC mode,
and given that the in-kernel users of CBC (such as CTS) don't trigger the
same issue as the GCM driver, let's just disable the output IV generation
for all modes except CBC for the time being.

Fixes: 854b06f768 ("crypto: caam - properly set IV after {en,de}crypt")
Cc: Horia Geanta <horia.geanta@nxp.com>
Cc: Iuliana Prodan <iuliana.prodan@nxp.com>
Reported-by: Sascha Hauer <s.hauer@pengutronix.de>
Cc: <stable@vger.kernel.org>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Horia Geanta <horia.geanta@nxp.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2019-06-06 14:44:16 +08:00
..
caamalg_desc.c crypto: caam - print debug messages at debug level 2019-05-30 15:35:45 +08:00
caamalg_desc.h crypto: caam/qi2 - add support for Chacha20 + Poly1305 2018-11-16 14:11:03 +08:00
caamalg_qi2.c crypto: caam - print messages in caam_dump_sg at debug level 2019-05-30 15:35:45 +08:00
caamalg_qi2.h crypto: caam/qi2 - fix DMA mapping of stack memory 2019-05-03 14:03:29 +08:00
caamalg_qi.c crypto: caam - print messages in caam_dump_sg at debug level 2019-05-30 15:35:45 +08:00
caamalg.c crypto: caam - limit output IV to CBC to work around CTR mode DMA issue 2019-06-06 14:44:16 +08:00
caamhash_desc.c crypto: caam - add support for cmac(aes) 2019-02-01 14:42:03 +08:00
caamhash_desc.h crypto: caam - add support for cmac(aes) 2019-02-01 14:42:03 +08:00
caamhash.c crypto: caam - print debug messages at debug level 2019-05-30 15:35:45 +08:00
caampkc.c crypto: caam - strip input without changing crypto request 2019-06-06 14:38:57 +08:00
caampkc.h crypto: caam - strip input without changing crypto request 2019-06-06 14:38:57 +08:00
caamrng.c crypto: caam - print debug messages at debug level 2019-05-30 15:35:45 +08:00
compat.h crypto: caam - add ecb(*) support 2019-02-15 13:21:55 +08:00
ctrl.c crypto: caam/qi - fix address translations with IOMMU enabled 2019-05-23 14:01:04 +08:00
ctrl.h crypto: caam - staticize caam_get_era() 2018-04-21 00:58:36 +08:00
desc_constr.h crypto: caam - fix S/G table passing page boundary 2019-05-23 14:01:03 +08:00
desc.h crypto: caam - fix SHA support detection 2019-01-10 21:37:31 +08:00
dpseci_cmd.h crypto: caam - add DPAA2-CAAM (DPSECI) backend API 2018-09-21 13:24:51 +08:00
dpseci.c crypto: caam - add DPAA2-CAAM (DPSECI) backend API 2018-09-21 13:24:51 +08:00
dpseci.h crypto: caam - add DPAA2-CAAM (DPSECI) backend API 2018-09-21 13:24:51 +08:00
error.c crypto: caam - print messages in caam_dump_sg at debug level 2019-05-30 15:35:45 +08:00
error.h crypto: caam - print messages in caam_dump_sg at debug level 2019-05-30 15:35:45 +08:00
intern.h crypto: caam/qi - fix address translations with IOMMU enabled 2019-05-23 14:01:04 +08:00
jr.c crypto: caam - convert top level drivers to libraries 2019-05-23 14:01:03 +08:00
jr.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig crypto: caam - convert top level drivers to libraries 2019-05-23 14:01:03 +08:00
key_gen.c crypto: caam - print debug messages at debug level 2019-05-30 15:35:45 +08:00
key_gen.h crypto: caam - add Derived Key Protocol (DKP) support 2017-12-28 17:56:48 +11:00
Makefile crypto: caam - convert top level drivers to libraries 2019-05-23 14:01:03 +08:00
pdb.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pkc_desc.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
qi.c crypto: caam/qi - fix address translations with IOMMU enabled 2019-05-23 14:01:04 +08:00
qi.h crypto: caam/qi - simplify CGR allocation, freeing 2018-10-17 14:14:46 +08:00
regs.h Revert "crypto: caam/jr - Remove extra memory barrier during job ring dequeue" 2019-05-09 13:20:48 +08:00
sg_sw_qm2.h crypto: caam - add SPDX license identifier to all files 2018-10-17 14:16:18 +08:00
sg_sw_qm.h crypto: caam - add SPDX license identifier to all files 2018-10-17 14:16:18 +08:00
sg_sw_sec4.h crypto: caam - print debug messages at debug level 2019-05-30 15:35:45 +08:00