Re: [PATCH] rcu: Fix sign bug making rcu_random always return the same sequence



On Fri, Aug 18, 2006 at 05:35:17PM -0700, Josh Triplett wrote:
rcu_random uses a counter rrs_count to occasionally mix data from
get_random_bytes into the state of its pseudorandom generator. However, the
rrs_counter gets declared as an unsigned long, and rcu_random checks for
--rrs_count < 0, so this code will never mix any real random data into the
state, and will thus always return the same sequence of random numbers.

Also, change the return value of rcu_random from long to unsigned long, to
avoid potential issues caused by the use of the % operator, which can return
negative values for negative left operands.

Acked-by: Paul E. McKenney <paulmck@xxxxxxxxxx>
Signed-off-by: Josh Triplett <josh@xxxxxxxxxxxxxxx>
---
kernel/rcutorture.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/rcutorture.c b/kernel/rcutorture.c
index 8b09c95..ef6a124 100644
--- a/kernel/rcutorture.c
+++ b/kernel/rcutorture.c
@@ -146,7 +146,7 @@ rcu_torture_free(struct rcu_torture *p)

struct rcu_random_state {
unsigned long rrs_state;
- unsigned long rrs_count;
+ long rrs_count;
};

#define RCU_RANDOM_MULT 39916801 /* prime */
@@ -159,7 +159,7 @@ #define DEFINE_RCU_RANDOM(name) struct r
* Crude but fast random-number generator. Uses a linear congruential
* generator, with occasional help from get_random_bytes().
*/
-static long
+static unsigned long
rcu_random(struct rcu_random_state *rrsp)
{
long refresh;
--
1.4.1.1


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • [PATCH] rcu: Fix sign bug making rcu_random always return the same sequence
    ... get_random_bytes into the state of its pseudorandom generator. ... struct rcu_random_state { ... * Crude but fast random-number generator. ...
    (Linux-Kernel)
  • Re: Testing a Pseudo-Random Generator
    ... The general definition for a pseudorandom generator is that there does ... not exist a polynomial distinguisher, that is, an algorithm which runs ...
    (sci.stat.math)
  • Re: Weakness of Feistel ciphers
    ... How do I reconcile the above two statements? ... If you do need your generator to be cryptographically strong, ... to design your own pseudorandom generator, as it is easy to go wrong ... discussions of cryptography and related topics. ...
    (sci.crypt)