linux/drivers/crypto/caam
Alex Porosanu e92d3649f8 crypto: caam - fix AEAD givenc descriptors
[ Upstream commit d128af1787 ]

The AEAD givenc descriptor relies on moving the IV through the
output FIFO and then back to the CTX2 for authentication. The
SEQ FIFO STORE could be scheduled before the data can be
read from OFIFO, especially since the SEQ FIFO LOAD needs
to wait for the SEQ FIFO LOAD SKIP to finish first. The
SKIP takes more time when the input is SG than when it's
a contiguous buffer. If the SEQ FIFO LOAD is not scheduled
before the STORE, the DECO will hang waiting for data
to be available in the OFIFO so it can be transferred to C2.
In order to overcome this, first force transfer of IV to C2
by starting the "cryptlen" transfer first and then starting to
store data from OFIFO to the output buffer.

Fixes: 1acebad3d8 ("crypto: caam - faster aead implementation")
Cc: <stable@vger.kernel.org> # 3.2+
Signed-off-by: Alex Porosanu <alexandru.porosanu@nxp.com>
Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
History 2017-01-13 18:00:21 -05:00
..
caamalg.c crypto: caam - fix AEAD givenc descriptors 2017-01-13 18:00:21 -05:00
caamhash.c crypto: caam - fix non-hmac hashes 2016-08-31 19:26:24 -04:00
caamrng.c crypto: caam - fix RNG buffer cache alignment 2015-07-01 15:34:44 -04:00
compat.h crypto: caam - add support for aead null encryption 2014-03-21 21:54:27 +08:00
ctrl.c crypto: caam - Dynamic allocation of addresses for various memory blocks in CAAM. 2014-09-15 19:44:11 +08:00
ctrl.h crypto: caam - fix ERA retrieval function 2014-02-09 09:59:27 +08:00
desc.h crypto: caam - remove duplicate FIFOST_CONT_MASK define 2014-06-20 21:27:57 +08:00
desc_constr.h crypto: caam - add support for aead null encryption 2014-03-21 21:54:27 +08:00
error.c crypto: caam - Fix the 'quoted string split across lines' 2014-05-08 21:58:11 +08:00
error.h crypto: caam - Contain caam_jr_strstatus() ugliness 2014-05-08 21:58:06 +08:00
intern.h crypto: caam - Dynamic allocation of addresses for various memory blocks in CAAM. 2014-09-15 19:44:11 +08:00
jr.c crypto: caam - fix caam_jr_alloc() ret code 2016-06-06 19:11:01 -04:00
jr.h crypto: caam - Add API's to allocate/free Job Rings 2013-10-30 12:02:57 +08:00
Kconfig crypto: caam - Add Platform driver for Job Ring 2013-10-30 12:02:57 +08:00
key_gen.c crypto: caam - fix missing dma unmap on error path 2014-11-06 23:10:20 +08:00
key_gen.h crypto: caam - change key gen functions to return signed int 2013-04-25 21:01:43 +08:00
Makefile crypto: caam - Add Platform driver for Job Ring 2013-10-30 12:02:57 +08:00
pdb.h crypto: caam - Add define for Adjust Output Frame Length in PDB 2013-05-28 15:37:08 +08:00
regs.h crypto: caam - Dynamic allocation of addresses for various memory blocks in CAAM. 2014-09-15 19:44:11 +08:00
sg_sw_sec4.h crypto: caam - remove duplicated sg copy functions 2014-08-25 20:34:05 +08:00