diff options
Diffstat (limited to 'drivers/char/random.c')
-rw-r--r-- | drivers/char/random.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/char/random.c b/drivers/char/random.c index bf5f99fc36f1..c75b6cdf0053 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c | |||
@@ -779,6 +779,13 @@ static struct crng_state **crng_node_pool __read_mostly; | |||
779 | 779 | ||
780 | static void invalidate_batched_entropy(void); | 780 | static void invalidate_batched_entropy(void); |
781 | 781 | ||
782 | static bool trust_cpu __ro_after_init = IS_ENABLED(CONFIG_RANDOM_TRUST_CPU); | ||
783 | static int __init parse_trust_cpu(char *arg) | ||
784 | { | ||
785 | return kstrtobool(arg, &trust_cpu); | ||
786 | } | ||
787 | early_param("random.trust_cpu", parse_trust_cpu); | ||
788 | |||
782 | static void crng_initialize(struct crng_state *crng) | 789 | static void crng_initialize(struct crng_state *crng) |
783 | { | 790 | { |
784 | int i; | 791 | int i; |
@@ -799,12 +806,10 @@ static void crng_initialize(struct crng_state *crng) | |||
799 | } | 806 | } |
800 | crng->state[i] ^= rv; | 807 | crng->state[i] ^= rv; |
801 | } | 808 | } |
802 | #ifdef CONFIG_RANDOM_TRUST_CPU | 809 | if (trust_cpu && arch_init) { |
803 | if (arch_init) { | ||
804 | crng_init = 2; | 810 | crng_init = 2; |
805 | pr_notice("random: crng done (trusting CPU's manufacturer)\n"); | 811 | pr_notice("random: crng done (trusting CPU's manufacturer)\n"); |
806 | } | 812 | } |
807 | #endif | ||
808 | crng->init_time = jiffies - CRNG_RESEED_INTERVAL - 1; | 813 | crng->init_time = jiffies - CRNG_RESEED_INTERVAL - 1; |
809 | } | 814 | } |
810 | 815 | ||