linux/drivers/crypto/caam
Horia Geantă 050a7601d5 crypto: caam - fix endless loop when DECO acquire fails
commit 225ece3e7d upstream.

In case DECO0 cannot be acquired - i.e. run_descriptor_deco0() fails
with -ENODEV, caam_probe() enters an endless loop:

run_descriptor_deco0
	ret -ENODEV
	-> instantiate_rng
		-ENODEV, overwritten by -EAGAIN
		ret -EAGAIN
		-> caam_probe
			-EAGAIN results in endless loop

It turns out the error path in instantiate_rng() is incorrect,
the checks are done in the wrong order.

Fixes: 1005bccd7a ("crypto: caam - enable instantiation of all RNG4 state handles")
Reported-by: Bryan O'Donoghue <pure.logic@nexus-software.ie>
Suggested-by: Auer Lukas <lukas.auer@aisec.fraunhofer.de>
Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
[bwh: Backported to 3.16: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2018-06-16 22:22:11 +01:00
..
caamalg.c crypto: caam - fix AEAD givenc descriptors 2017-03-16 02:26:20 +00:00
caamhash.c crypto: caam - fix signals handling 2017-10-12 15:28:05 +01:00
caamrng.c crypto: caam - fix RNG buffer cache alignment 2015-06-30 17:15:29 +01:00
compat.h crypto: caam - add support for aead null encryption 2014-03-21 21:54:27 +08:00
ctrl.c crypto: caam - fix endless loop when DECO acquire fails 2018-06-16 22:22:11 +01:00
ctrl.h crypto: caam - fix ERA retrieval function 2014-02-09 09:59:27 +08:00
desc.h crypto: caam - fix incorrect define 2018-02-13 18:42:14 +00: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 - Modify the interface layers to use JR API's 2013-10-30 12:02:58 +08:00
jr.c crypto: caam - fix caam_jr_alloc() ret code 2016-08-22 22:38:11 +01: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 signals handling 2017-10-12 15:28:05 +01: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 - writel() arguments are swapped 2014-02-27 05:56:59 +08:00
sg_sw_sec4.h crypto: caam - remove duplicated sg copy functions 2014-11-27 11:22:03 +00:00