patches/0001-Disable-PRNG-entropy-accounting.patch
author Florian Westphal <fw@strlen.de>
Thu, 09 Apr 2009 12:07:21 +0200
changeset 2 d1f6d8b6f81c
permissions -rw-r--r--
Linux 2.6.29 for NSC 0.5.0.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
     1
From d8f0df50e5449782d2823ea788fa5e8dc48a4473 Mon Sep 17 00:00:00 2001
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
     2
From: Florian Westphal <fw@strlen.de>
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
     3
Date: Sun, 22 Mar 2009 15:09:07 +0100
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
     4
Subject: [PATCH] Disable PRNG entropy accounting.
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
     5
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
     6
The real fix is to either completely replace random.c,
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
     7
providing our own implementation using ns-3 rng infrastructure,
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
     8
or feed the prng periodically.
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
     9
---
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    10
 drivers/char/random.c |   10 +++++++++-
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    11
 1 files changed, 9 insertions(+), 1 deletions(-)
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    12
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    13
diff --git a/drivers/char/random.c b/drivers/char/random.c
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    14
index 7c13581..1efc24e 100644
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    15
--- a/drivers/char/random.c
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    16
+++ b/drivers/char/random.c
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    17
@@ -766,7 +766,15 @@ static size_t account(struct entropy_store *r, size_t nbytes, int min,
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    18
 		      int reserved)
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    19
 {
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    20
 	unsigned long flags;
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    21
-
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    22
+#ifdef CONFIG_NSC
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    23
+	/*
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    24
+	 * prevent infinite loop: if a code path calls get_random_bytes
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    25
+	 * and we've run out of entropy, this calls wake_up_interruptible(),
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    26
+	 * which calls the code path again, which calls get_random_bytes,
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    27
+	 * which calls wake_up which...
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    28
+	 */
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    29
+	return nbytes;
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    30
+#endif
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    31
 	/* Hold lock while accounting */
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    32
 	spin_lock_irqsave(&r->lock, flags);
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    33
 
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    34
-- 
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    35
1.6.0.6
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    36