linux/drivers/crypto/caam
Horia Geantă ccef31d22e crypto: caam - fix error path for ctx_dma mapping failure
commit 87ec02e740 upstream.

In case ctx_dma dma mapping fails, ahash_unmap_ctx() tries to
dma unmap an invalid address:
map_seq_out_ptr_ctx() / ctx_map_to_sec4_sg() -> goto unmap_ctx ->
-> ahash_unmap_ctx() -> dma unmap ctx_dma

There is also possible to reach ahash_unmap_ctx() with ctx_dma
uninitialzed or to try to unmap the same address twice.

Fix these by setting ctx_dma = 0 where needed:
-initialize ctx_dma in ahash_init()
-clear ctx_dma in case of mapping error (instead of holding
the error code returned by the dma map function)
-clear ctx_dma after each unmapping

Fixes: 32686d34f8 ("crypto: caam - ensure that we clean up after an error")
Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2017-05-14 14:00:13 +02:00
..
caamalg.c crypto: caam - fix AEAD givenc descriptors 2017-01-06 10:40:13 +01:00
caamhash.c crypto: caam - fix error path for ctx_dma mapping failure 2017-05-14 14:00:13 +02:00
caampkc.c crypto: caam - fix invalid dereference in caam_rsa_init_tfm() 2017-04-18 07:11:49 +02:00
caampkc.h crypto: caam - add support for RSA algorithm 2016-07-05 23:05:24 +08:00
caamrng.c crypto: caam - Use the preferred style for memory allocations 2015-08-24 22:07:42 +08:00
compat.h crypto: caam - add support for RSA algorithm 2016-07-05 23:05:24 +08:00
ctrl.c crypto: caam - fix RNG deinstantiation error checking 2017-04-18 07:11:49 +02:00
ctrl.h crypto: caam - fix ERA retrieval function 2014-02-09 09:59:27 +08:00
desc.h crypto: caam - treat SGT address pointer as u64 2016-10-02 22:33:45 +08:00
desc_constr.h crypto: caam - fix rfc3686(ctr(aes)) IV load 2016-09-07 21:08:28 +08:00
error.c crypto: caam - don't emit ICV check failures to dmesg 2015-01-26 11:34:23 +11:00
error.h crypto: caam - Contain caam_jr_strstatus() ugliness 2014-05-08 21:58:06 +08:00
intern.h crypto: caam - get rid of tasklet 2016-08-09 18:47:28 +08:00
jr.c crypto: caam - Unmap region obtained by of_iomap 2016-10-02 22:33:43 +08: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 support for RSA algorithm 2016-07-05 23:05:24 +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 support for RSA algorithm 2016-07-05 23:05:24 +08:00
pdb.h crypto: caam - add support for RSA algorithm 2016-07-05 23:05:24 +08:00
pkc_desc.c crypto: caam - add support for RSA algorithm 2016-07-05 23:05:24 +08:00
regs.h crypto: caam - treat SGT address pointer as u64 2016-10-02 22:33:45 +08:00
sg_sw_sec4.h crypto: caam - treat SGT address pointer as u64 2016-10-02 22:33:45 +08:00