crng 504 drivers/char/random.c static void _extract_crng(struct crng_state *crng, __u8 out[CHACHA_BLOCK_SIZE]); crng 505 drivers/char/random.c static void _crng_backtrack_protect(struct crng_state *crng, crng 552 drivers/char/random.c static void crng_reseed(struct crng_state *crng, struct entropy_store *r); crng 863 drivers/char/random.c static void crng_initialize(struct crng_state *crng) crng 869 drivers/char/random.c memcpy(&crng->state[0], "expand 32-byte k", 16); crng 870 drivers/char/random.c if (crng == &primary_crng) crng 871 drivers/char/random.c _extract_entropy(&input_pool, &crng->state[4], crng 874 drivers/char/random.c _get_random_bytes(&crng->state[4], sizeof(__u32) * 12); crng 881 drivers/char/random.c crng->state[i] ^= rv; crng 883 drivers/char/random.c if (trust_cpu && arch_init && crng == &primary_crng) { crng 889 drivers/char/random.c crng->init_time = jiffies - CRNG_RESEED_INTERVAL - 1; crng 896 drivers/char/random.c struct crng_state *crng; crng 901 drivers/char/random.c crng = kmalloc_node(sizeof(struct crng_state), crng 903 drivers/char/random.c spin_lock_init(&crng->lock); crng 904 drivers/char/random.c crng_initialize(crng); crng 905 drivers/char/random.c pool[i] = crng; crng 1000 drivers/char/random.c static void crng_reseed(struct crng_state *crng, struct entropy_store *r) crng 1018 drivers/char/random.c spin_lock_irqsave(&crng->lock, flags); crng 1024 drivers/char/random.c crng->state[i+4] ^= buf.key[i] ^ rv; crng 1027 drivers/char/random.c crng->init_time = jiffies; crng 1028 drivers/char/random.c spin_unlock_irqrestore(&crng->lock, flags); crng 1029 drivers/char/random.c if (crng == &primary_crng && crng_init < 2) { crng 1051 drivers/char/random.c static void _extract_crng(struct crng_state *crng, crng 1057 drivers/char/random.c (time_after(crng_global_init_time, crng->init_time) || crng 1058 drivers/char/random.c time_after(jiffies, crng->init_time + CRNG_RESEED_INTERVAL))) crng 1059 drivers/char/random.c crng_reseed(crng, crng == &primary_crng ? &input_pool : NULL); crng 1060 drivers/char/random.c spin_lock_irqsave(&crng->lock, flags); crng 1062 drivers/char/random.c crng->state[14] ^= v; crng 1063 drivers/char/random.c chacha20_block(&crng->state[0], out); crng 1064 drivers/char/random.c if (crng->state[12] == 0) crng 1065 drivers/char/random.c crng->state[13]++; crng 1066 drivers/char/random.c spin_unlock_irqrestore(&crng->lock, flags); crng 1071 drivers/char/random.c struct crng_state *crng = NULL; crng 1075 drivers/char/random.c crng = crng_node_pool[numa_node_id()]; crng 1076 drivers/char/random.c if (crng == NULL) crng 1078 drivers/char/random.c crng = &primary_crng; crng 1079 drivers/char/random.c _extract_crng(crng, out); crng 1086 drivers/char/random.c static void _crng_backtrack_protect(struct crng_state *crng, crng 1098 drivers/char/random.c spin_lock_irqsave(&crng->lock, flags); crng 1100 drivers/char/random.c d = &crng->state[4]; crng 1103 drivers/char/random.c spin_unlock_irqrestore(&crng->lock, flags); crng 1108 drivers/char/random.c struct crng_state *crng = NULL; crng 1112 drivers/char/random.c crng = crng_node_pool[numa_node_id()]; crng 1113 drivers/char/random.c if (crng == NULL) crng 1115 drivers/char/random.c crng = &primary_crng; crng 1116 drivers/char/random.c _crng_backtrack_protect(crng, tmp, used);