lkml.org 
[lkml]   [2011]   [Mar]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Date
Subject[PATCH 2/8] drivers/char/random: Split out __get_random_int
The unlocked function is needed for following work.
No API change.

(Minor functional change while messing with code: all 64 bits of
the cycles counter is used. No API change.)
---
drivers/char/random.c | 27 +++++++++++++++++----------
1 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/drivers/char/random.c b/drivers/char/random.c
index 4bcc4f2..fdbf7b6 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -1621,22 +1621,29 @@ EXPORT_SYMBOL(secure_dccp_sequence_number);
/*
* Get a random word for internal kernel use only. Similar to urandom but
* with the goal of minimal entropy pool depletion. As a result, the random
- * value is not cryptographically secure but for several uses the cost of
- * depleting entropy is too high
+ * value is not strongly cryptographically secure, but for several uses the
+ * cost of depleting entropy is too high.
*/
DEFINE_PER_CPU(__u32 [4], get_random_int_hash);
-unsigned int get_random_int(void)
+static u32 __get_random_int(u32 *hash)
{
- struct keydata *keyptr;
- __u32 *hash = get_cpu_var(get_random_int_hash);
- int ret;
+ struct keydata const *keyptr = get_keyptr();
+ cycles_t c = get_cycles();

- keyptr = get_keyptr();
- hash[0] += current->pid + jiffies + get_cycles();
+ /* Throw in some extra seed material */
+ hash[0] += (__u32)c;
+ hash[1] += (__u32)(c>>16>>16); /* Safe if cycles_it is 32 bits. */
+ hash[2] += current->pid + jiffies;

- ret = half_md4_transform(hash, keyptr->secret);
- put_cpu_var(get_random_int_hash);
+ return half_md4_transform(hash, keyptr->secret);
+}

+unsigned int get_random_int(void)
+{
+ u32 *hash = get_cpu_var(get_random_int_hash);
+ u32 ret = __get_random_int(hash);
+
+ put_cpu_var(get_random_int_hash);
return ret;
}

--
1.7.4.1


\
 
 \ /
  Last update: 2011-03-16 03:31    [W:2.102 / U:0.008 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site