Otherwise, we might be seeding the RNG using bad randomness, which is
dangerous. The one use of this function from within the kernel -- not
from userspace -- is being removed (keys/big_key), so that call site
isn't relevant in assessing this.

Cc: Herbert Xu <herb...@gondor.apana.org.au>
Signed-off-by: Jason A. Donenfeld <ja...@zx2c4.com>
---
 crypto/rng.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/crypto/rng.c b/crypto/rng.c
index f46dac5288b9..e042437e64b4 100644
--- a/crypto/rng.c
+++ b/crypto/rng.c
@@ -48,12 +48,14 @@ int crypto_rng_reset(struct crypto_rng *tfm, const u8 
*seed, unsigned int slen)
                if (!buf)
                        return -ENOMEM;
 
-               get_random_bytes(buf, slen);
+               err = get_random_bytes_wait(buf, slen);
+               if (err)
+                       goto out;
                seed = buf;
        }
 
        err = crypto_rng_alg(tfm)->seed(tfm, seed, slen);
-
+out:
        kzfree(buf);
        return err;
 }
-- 
2.13.0

Reply via email to