summaryrefslogtreecommitdiff
path: root/crypto/drbg.c
diff options
context:
space:
mode:
authorNicolai Stange <nstange@suse.de>2021-11-15 15:18:08 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-05-17 11:47:50 +0200
commit9dbdedd44ff42fbbcd6235f3aa89aeb291f2355c (patch)
tree77773b80aceebe4e99295d40a07119ebc391c2ab /crypto/drbg.c
parent27942f477d1069adab3f6c45f59146bc9379dd45 (diff)
downloadlinux-9dbdedd44ff42fbbcd6235f3aa89aeb291f2355c.tar.gz
linux-9dbdedd44ff42fbbcd6235f3aa89aeb291f2355c.tar.bz2
linux-9dbdedd44ff42fbbcd6235f3aa89aeb291f2355c.zip
crypto: drbg - make drbg_prepare_hrng() handle jent instantiation errors
[ Upstream commit 559edd47cce4cc407d606b4d7f376822816fd4b8 ] Now that drbg_prepare_hrng() doesn't do anything but to instantiate a jitterentropy crypto_rng instance, it looks a little odd to have the related error handling at its only caller, drbg_instantiate(). Move the handling of jitterentropy allocation failures from drbg_instantiate() close to the allocation itself in drbg_prepare_hrng(). There is no change in behaviour. Signed-off-by: Nicolai Stange <nstange@suse.de> Reviewed-by: Stephan Müller <smueller@chronox.de> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Stable-dep-of: 686cd976b6dd ("crypto: drbg - Only fail when jent is unavailable in FIPS mode") Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'crypto/drbg.c')
-rw-r--r--crypto/drbg.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/crypto/drbg.c b/crypto/drbg.c
index a4b5d6dbe99d..ecc6b167b89e 100644
--- a/crypto/drbg.c
+++ b/crypto/drbg.c
@@ -1515,6 +1515,14 @@ static int drbg_prepare_hrng(struct drbg_state *drbg)
return 0;
drbg->jent = crypto_alloc_rng("jitterentropy_rng", 0, 0);
+ if (IS_ERR(drbg->jent)) {
+ const int err = PTR_ERR(drbg->jent);
+
+ drbg->jent = NULL;
+ if (fips_enabled || err != -ENOENT)
+ return err;
+ pr_info("DRBG: Continuing without Jitter RNG\n");
+ }
return 0;
}
@@ -1570,14 +1578,6 @@ static int drbg_instantiate(struct drbg_state *drbg, struct drbg_string *pers,
if (ret)
goto free_everything;
- if (IS_ERR(drbg->jent)) {
- ret = PTR_ERR(drbg->jent);
- drbg->jent = NULL;
- if (fips_enabled || ret != -ENOENT)
- goto free_everything;
- pr_info("DRBG: Continuing without Jitter RNG\n");
- }
-
reseed = false;
}