diff options
| author | Theodore Ts'o <tytso@mit.edu> | 2016-06-13 10:10:51 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2016-08-20 11:53:20 +0200 |
| commit | 1e38c381e0cc02c7d12d1659dcba5d31a96fee41 (patch) | |
| tree | afc8188177bac423c80592d9e4ceb370a07c23f4 | |
| parent | b62a2dd877df2d7372d8762cd151661a591c3002 (diff) | |
random: print a warning for the first ten uninitialized random users
commit 9b4d008787f864f17d008c9c15bbe8a0f7e2fc24 upstream.
Since systemd is consistently using /dev/urandom before it is
initialized, we can't see the other potentially dangerous users of
/dev/urandom immediately after boot. So print the first ten such
complaints instead.
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| -rw-r--r-- | drivers/char/random.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/char/random.c b/drivers/char/random.c index d20ac1997886..a35a605c418a 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -1339,12 +1339,16 @@ random_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos) static ssize_t urandom_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos) { + static int maxwarn = 10; int ret; - if (unlikely(nonblocking_pool.initialized == 0)) - printk_once(KERN_NOTICE "random: %s urandom read " - "with %d bits of entropy available\n", - current->comm, nonblocking_pool.entropy_total); + if (unlikely(nonblocking_pool.initialized == 0) && + maxwarn > 0) { + maxwarn--; + printk(KERN_NOTICE "random: %s: uninitialized urandom read " + "(%zd bytes read, %d bits of entropy available)\n", + current->comm, nbytes, nonblocking_pool.entropy_total); + } ret = extract_entropy_user(&nonblocking_pool, buf, nbytes); |
