crypto: drbg - make drbg_prepare_hrng() handle jent instantiation errors
authorNicolai Stange <nstange@suse.de>
Mon, 15 Nov 2021 14:18:08 +0000 (15:18 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 26 Nov 2021 05:16:50 +0000 (16:16 +1100)
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>
crypto/drbg.c

index 2b03a05..9f64859 100644 (file)
@@ -1516,6 +1516,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;
 }
@@ -1571,14 +1579,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;
        }