crypto: caam - drop global context pointer and init_done
authorAndrey Smirnov <andrew.smirnov@gmail.com>
Thu, 19 Mar 2020 16:12:27 +0000 (09:12 -0700)
committerHerbert Xu <herbert@gondor.apana.org.au>
Mon, 30 Mar 2020 00:50:49 +0000 (11:50 +1100)
commit1517f63cd84f00da3a3e21dff042410b2799c1c3
treea051ca2063818227b747b1071df88ff7691a067c
parent8483c831b9f3fca2219ac45f361386a1233f6c9b
crypto: caam - drop global context pointer and init_done

Leverage devres to get rid of code storing global context as well as
init_done flag.

Original code also has a circular deallocation dependency where
unregister_algs() -> caam_rng_exit() -> caam_jr_free() chain would
only happen if all of JRs were freed. Fix this by moving
caam_rng_exit() outside of unregister_algs() and doing it specifically
for JR that instantiated HWRNG.

Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Cc: Chris Healy <cphealy@gmail.com>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Horia Geantă <horia.geanta@nxp.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Iuliana Prodan <iuliana.prodan@nxp.com>
Cc: linux-crypto@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-imx@nxp.com
Reviewed-by: Horia Geantă <horia.geanta@nxp.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/caam/caamrng.c
drivers/crypto/caam/intern.h
drivers/crypto/caam/jr.c