Theodore Ts'o
775f4b297b
random: make 'add_interrupt_randomness()' do something sane
...
We've been moving away from add_interrupt_randomness() for various
reasons: it's too expensive to do on every interrupt, and flooding the
CPU with interrupts could theoretically cause bogus floods of entropy
from a somewhat externally controllable source.
This solves both problems by limiting the actual randomness addition
to just once a second or after 64 interrupts, whicever comes first.
During that time, the interrupt cycle data is buffered up in a per-cpu
pool. Also, we make sure the the nonblocking pool used by urandom is
initialized before we start feeding the normal input pool. This
assures that /dev/urandom is returning unpredictable data as soon as
possible.
(Based on an original patch by Linus, but significantly modified by
tytso.)
Tested-by: Eric Wustrow <ewust@umich.edu >
Reported-by: Eric Wustrow <ewust@umich.edu >
Reported-by: Nadia Heninger <nadiah@cs.ucsd.edu >
Reported-by: Zakir Durumeric <zakir@umich.edu >
Reported-by: J. Alex Halderman <jhalderm@umich.edu >.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu >
Cc: stable@vger.kernel.org
2012-07-14 20:17:28 -04:00
..
2012-04-04 17:26:08 -07:00
2012-06-18 11:45:57 +02:00
2011-07-26 16:49:45 -07:00
2012-07-14 20:17:28 -04:00
2012-05-18 20:44:59 +02:00
2012-06-08 14:59:29 -07:00
2012-06-15 16:52:35 -07:00
2012-06-06 22:15:14 -04:00
2012-01-08 12:19:57 -08:00
2012-01-13 09:32:18 +10:30
2011-07-20 14:10:11 -07:00
2011-03-14 09:15:23 -04:00
2012-03-20 21:29:40 -04:00
2012-01-17 16:16:57 -05:00
2012-01-17 16:17:01 -05:00
2012-04-14 11:13:20 +10:00
2011-03-23 19:46:28 -07:00
2012-05-15 14:59:24 -07:00
2012-04-01 12:09:55 -07:00
2012-06-18 15:38:02 -07:00
2012-05-21 23:52:30 -04:00
2011-07-25 20:57:15 -07:00
2012-05-31 17:49:27 -07:00
2012-05-31 17:49:30 -07:00
2012-05-22 17:40:19 -07:00
2011-11-06 19:44:47 -08:00
2012-05-23 22:11:41 -04:00
2011-07-14 12:59:14 +03:00
2012-03-28 18:30:03 +01:00
2010-08-09 20:45:05 -07:00
2012-06-20 14:39:36 -07:00
2012-04-19 15:06:55 -07:00
2012-06-07 17:54:07 -07:00
2012-03-04 23:08:54 +01:00
2012-03-29 11:37:17 +02:00
2012-03-29 11:37:17 +02:00
2012-05-03 03:29:33 -07:00
2011-11-28 08:43:52 -08:00
2012-04-25 12:39:25 +02:00
2012-04-13 13:15:16 -04:00
2012-04-10 11:00:30 +02:00
2012-02-28 20:01:08 +01:00
2012-05-29 16:22:32 -07:00
2012-05-31 17:49:32 -07:00
2012-03-23 13:18:57 +01:00
2012-03-23 13:18:57 +01:00
2012-03-28 17:19:28 -07:00
2012-04-11 18:24:37 -03:00
2012-05-31 17:49:28 -07:00
2012-03-05 15:49:42 -08:00
2011-10-31 09:20:13 -04:00
2011-11-23 09:28:17 -08:00
2011-10-31 09:20:12 -04:00
2012-05-29 23:28:41 -04:00
2010-05-04 05:38:16 +02:00
2011-10-31 09:20:12 -04:00
2012-02-21 09:06:06 -08:00
2012-06-01 10:34:35 -07:00
2012-05-23 22:28:53 +09:30
2011-10-31 09:20:12 -04:00
2011-04-14 08:52:33 +02:00
2012-03-01 10:28:03 +01:00
2011-04-14 08:52:33 +02:00
2011-10-31 09:20:12 -04:00
2011-10-31 09:20:12 -04:00
2012-03-29 19:52:46 +08:00
2012-05-18 14:02:10 +02:00
2012-05-04 17:28:18 -07:00
2012-06-20 14:39:36 -07:00
2012-05-24 00:28:21 -04:00
2011-12-15 14:56:19 +01:00
2011-10-31 09:20:12 -04:00
2012-06-30 15:56:40 -07:00
2011-10-31 09:20:12 -04:00
2012-05-03 03:28:51 -07:00
2011-10-31 09:20:11 -04:00
2012-02-21 09:06:12 -08:00
2012-05-02 14:48:27 -07:00
2012-05-02 14:48:27 -07:00
2012-02-21 09:06:13 -08:00
2012-04-30 10:48:26 -07:00
2012-06-06 20:43:28 -07:00
2012-05-09 14:27:54 -07:00
2012-06-25 12:35:25 -07:00
2012-06-06 20:43:28 -07:00
2012-02-10 09:04:49 +01:00
2012-05-29 16:22:27 -07:00
2012-05-31 17:49:26 -07:00
2011-01-27 21:13:51 -05:00
2011-12-06 08:16:49 +01:00
2011-12-14 14:54:22 -08:00
2011-12-11 10:33:18 -08:00
2012-03-28 18:30:03 +01:00
2012-04-18 12:24:52 +10:00
2012-04-05 17:15:55 -07:00
2012-06-01 12:58:52 -04:00
2012-05-08 12:35:06 +02:00
2012-05-24 22:58:08 +02:00
2012-05-04 12:52:25 +02:00
2012-03-20 10:32:09 -07:00
2012-03-23 13:18:57 +01:00
2012-04-30 10:48:25 -07:00
2011-10-31 09:20:12 -04:00
2011-11-06 19:44:47 -08:00
2012-05-31 17:49:32 -07:00
2012-06-20 14:39:36 -07:00
2011-12-20 10:25:04 -08:00
2012-04-05 14:51:43 +10:00
2012-05-23 22:09:21 -04:00
2011-09-19 17:04:37 -07:00
2010-10-14 08:55:27 +02:00
2012-03-15 18:17:55 -07:00
2012-05-23 17:42:39 -07:00
2012-02-24 10:05:59 +01:00
2011-12-15 14:56:19 +01:00
2012-05-03 03:28:41 -07:00
2011-10-31 09:20:12 -04:00
2012-05-03 03:28:38 -07:00
2011-10-31 09:20:12 -04:00
2012-05-19 15:44:40 -06:00
2011-11-06 19:44:47 -08:00
2012-04-07 16:55:51 -07:00
2011-12-21 10:07:39 +01:00
2012-06-14 12:20:50 +02:00
2010-06-29 10:07:14 +02:00
2012-05-15 08:08:31 -07:00