crypto: drbg - Only fail when jent is unavailable in FIPS mode
authorHerbert Xu <herbert@gondor.apana.org.au>
Tue, 28 Mar 2023 03:35:23 +0000 (11:35 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 6 Apr 2023 08:18:53 +0000 (16:18 +0800)
When jent initialisation fails for any reason other than ENOENT,
the entire drbg fails to initialise, even when we're not in FIPS
mode.  This is wrong because we can still use the kernel RNG when
we're not in FIPS mode.

Change it so that it only fails when we are in FIPS mode.

Fixes: 57225e679788 ("crypto: drbg - Use callback API for random readiness")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Reviewed-by: Stephan Mueller <smueller@chronox.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/drbg.c

index 982d4ca4526d89246b0b6c87b87fb71b79516984..ff4ebbc68efab1b2956e42784bb5c9cc1df785cb 100644 (file)
@@ -1546,7 +1546,7 @@ static int drbg_prepare_hrng(struct drbg_state *drbg)
                const int err = PTR_ERR(drbg->jent);
 
                drbg->jent = NULL;
-               if (fips_enabled || err != -ENOENT)
+               if (fips_enabled)
                        return err;
                pr_info("DRBG: Continuing without Jitter RNG\n");
        }