#define CRNG_INIT_CNT_THRESH (2*CHACHA20_KEY_SIZE)
static void _extract_crng(struct crng_state *crng,
__u8 out[CHACHA20_BLOCK_SIZE]);
-@@ -900,7 +901,8 @@ static void _extract_crng(struct crng_st
+@@ -873,7 +874,8 @@ static void _extract_crng(struct crng_st
unsigned long v, flags;
if (crng_ready() &&
crng_reseed(crng, crng == &primary_crng ? &input_pool : NULL);
spin_lock_irqsave(&crng->lock, flags);
if (arch_get_random_long(&v))
-@@ -1689,6 +1691,7 @@ static int rand_initialize(void)
+@@ -1668,6 +1670,7 @@ static int rand_initialize(void)
init_std_data(&input_pool);
init_std_data(&blocking_pool);
crng_initialize(&primary_crng);
+ crng_global_init_time = jiffies;
- return 0;
- }
- early_initcall(rand_initialize);
-@@ -1862,6 +1865,14 @@ static long random_ioctl(struct file *f,
+
+ #ifdef CONFIG_NUMA
+ pool = kcalloc(nr_node_ids, sizeof(*pool), GFP_KERNEL|__GFP_NOFAIL);
+@@ -1854,6 +1857,14 @@ static long random_ioctl(struct file *f,
input_pool.entropy_count = 0;
blocking_pool.entropy_count = 0;
return 0;
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
-@@ -862,7 +862,7 @@ static void crng_reseed(struct crng_stat
+@@ -836,7 +836,7 @@ static void crng_reseed(struct crng_stat
_crng_backtrack_protect(&primary_crng, buf.block,
CHACHA20_KEY_SIZE);
}
for (i = 0; i < 8; i++) {
unsigned long rv;
if (!arch_get_random_seed_long(&rv) &&
-@@ -879,7 +879,7 @@ static void crng_reseed(struct crng_stat
+@@ -852,7 +852,7 @@ static void crng_reseed(struct crng_stat
wake_up_interruptible(&crng_init_wait);
pr_notice("random: crng init done\n");
}
alsa-rawmidi-fix-missing-input-substream-checks-in-compat-ioctls.patch
alsa-hda-new-via-controller-suppor-no-snoop-path.patch
random-fix-crng_ready-test.patch
-random-set-up-the-numa-crng-instances-after-the-crng-is-fully-initialized.patch
random-crng_reseed-should-lock-the-crng-instance-that-it-is-modifying.patch
random-add-new-ioctl-rndreseedcrng.patch
hid-hidraw-fix-crash-on-hidiocgfeature-with-a-destroyed-device.patch