| From 30c603213737cdf39a268d19c1bc3f08c391702d Mon Sep 17 00:00:00 2001 |
| From: "H. Peter Anvin" <hpa@linux.intel.com> |
| Date: Mon, 16 Jan 2012 11:23:29 -0800 |
| Subject: [PATCH] random: Adjust the number of loops when initializing |
| |
| commit 2dac8e54f988ab58525505d7ef982493374433c3 upstream. |
| |
| When we are initializing using arch_get_random_long() we only need to |
| loop enough times to touch all the bytes in the buffer; using |
| poolwords for that does twice the number of operations necessary on a |
| 64-bit machine, since in the random number generator code "word" means |
| 32 bits. |
| |
| Signed-off-by: H. Peter Anvin <hpa@linux.intel.com> |
| Cc: "Theodore Ts'o" <tytso@mit.edu> |
| Link: http://lkml.kernel.org/r/1324589281-31931-1-git-send-email-tytso@mit.edu |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/char/random.c b/drivers/char/random.c |
| index c2ed1eb..eda1a08 100644 |
| --- a/drivers/char/random.c |
| +++ b/drivers/char/random.c |
| @@ -968,7 +968,7 @@ static void init_std_data(struct entropy_store *r) |
| |
| now = ktime_get_real(); |
| mix_pool_bytes(r, &now, sizeof(now)); |
| - for (i = r->poolinfo->poolwords; i; i--) { |
| + for (i = r->poolinfo->POOLBYTES; i > 0; i -= sizeof flags) { |
| if (!arch_get_random_long(&flags)) |
| break; |
| mix_pool_bytes(r, &flags, sizeof(flags)); |
| -- |
| 1.7.12.rc1.1.gbce1580 |
| |