diff options
author | Alex Porosanu <alexandru.porosanu@freescale.com> | 2013-09-09 15:56:29 (GMT) |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2013-09-13 11:43:54 (GMT) |
commit | b2744dfd39c51e6fd56e79ff2eabf9953d45027e (patch) | |
tree | 74176b26f6c819672946910cbf98d1c71e199496 /drivers/crypto/caam/caamrng.c | |
parent | d5e4e999cda51eaa62e662088579fcce0ac79e92 (diff) | |
download | linux-b2744dfd39c51e6fd56e79ff2eabf9953d45027e.tar.xz |
crypto: caam - fix hash, alg and rng registration if CAAM driver not initialized
If the CAAM driver initialization failed (due to various reasons, e.g. RNG4
initialization failed), then the registration of hash/algorithms/rng shouldn't
take place. This patch adds the necessary code to prevent this registration.
Signed-off-by: Alex Porosanu <alexandru.porosanu@freescale.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/caam/caamrng.c')
-rw-r--r-- | drivers/crypto/caam/caamrng.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/crypto/caam/caamrng.c b/drivers/crypto/caam/caamrng.c index d1939a9..588ad22 100644 --- a/drivers/crypto/caam/caamrng.c +++ b/drivers/crypto/caam/caamrng.c @@ -298,6 +298,13 @@ static int __init caam_rng_init(void) priv = dev_get_drvdata(ctrldev); of_node_put(dev_node); + /* + * If priv is NULL, it's probably because the caam driver wasn't + * properly initialized (e.g. RNG4 init failed). Thus, bail out here. + */ + if (!priv) + return -ENODEV; + caam_init_rng(&rng_ctx, priv->jrdev[0]); dev_info(priv->jrdev[0], "registering rng-caam\n"); |