horrible test hack
diff --git a/drivers/char/random.c b/drivers/char/random.c index a692129..1a7bb67 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c
@@ -377,6 +377,8 @@ */ static int random_write_wakeup_bits = 28 * OUTPUT_POOL_WORDS; +static int may_init; + /* * Originally, we used a primitive polynomial of degree .poolwords * over GF(2). The taps for various sizes are defined below. They @@ -956,6 +958,9 @@ static void crng_reseed(struct crng_state *crng, struct entropy_store *r) __u32 key[8]; } buf; + if (!may_init) + return; + if (r) { num = extract_entropy(r, &buf, 32, 16, 0); if (num == 0) @@ -1763,7 +1768,9 @@ static ssize_t initialized_read(struct file *file, static ssize_t initialized_write(struct file *file, const char __user *user_buf, size_t count, loff_t *ppos) { - return -EINVAL; + may_init = 1; + crng_reseed(&primary_crng, &input_pool); + return count; } static const struct file_operations initialized_fops = {