linux/drivers/crypto/caam
Horia Geantă 87ec02e740 crypto: caam - fix error path for ctx_dma mapping failure
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>
2017-02-15 13:23:42 +08:00
..
caamalg_desc.c crypto: caam - make aamalg_desc a proper module 2016-12-01 21:06:40 +08:00
caamalg_desc.h crypto: caam - refactor encryption descriptors generation 2016-11-28 21:23:23 +08:00
caamalg.c crypto: caam - fix DMA API leaks for multiple setkey() calls 2017-02-15 13:23:41 +08:00
caamhash.c crypto: caam - fix error path for ctx_dma mapping failure 2017-02-15 13:23:42 +08:00
caampkc.c crypto: caam - fix sparse warnings 2016-11-13 17:45:08 +08:00
caampkc.h crypto: caam - add support for RSA algorithm 2016-07-05 23:05:24 +08:00
caamrng.c crypto: caam - trivial code clean-up 2016-11-13 17:45:12 +08:00
compat.h crypto: caam - add support for RSA algorithm 2016-07-05 23:05:24 +08:00
ctrl.c crypto: caam - fix JR IO mapping if one fails 2017-02-15 13:23:38 +08:00
ctrl.h crypto: caam - fix ERA retrieval function 2014-02-09 09:59:27 +08:00
desc_constr.h crypto: caam - pass key buffers with typesafe pointers 2016-12-01 21:06:40 +08:00
desc.h crypto: caam - move sec4_sg_entry to sg_sw_sec4.h 2016-11-13 17:45:14 +08:00
error.c crypto: caam - don't include unneeded headers 2017-02-15 13:23:36 +08:00
error.h crypto: caam - Contain caam_jr_strstatus() ugliness 2014-05-08 21:58:06 +08:00
intern.h Revert "crypto: caam - get rid of tasklet" 2016-11-13 17:45:13 +08:00
jr.c crypto: caam - check return code of dma_set_mask_and_coherent() 2017-02-15 13:23:37 +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 - make aamalg_desc a proper module 2016-12-01 21:06:40 +08:00
key_gen.c crypto: caam - consolidate split key length computation 2016-11-28 21:23:23 +08:00
key_gen.h crypto: caam - consolidate split key length computation 2016-11-28 21:23:23 +08:00
Makefile crypto: caam - refactor encryption descriptors generation 2016-11-28 21:23:23 +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 - replace sg_count() with sg_nents_for_len() 2017-02-15 13:23:39 +08:00