From: Denys Vlasenko <dvlasenk@redhat.com>
To: "Theodore Ts'o" <tytso@mit.edu>,
Denys Vlasenko <vda.linux@googlemail.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
"H. Peter Anvin" <hpa@linux.intel.com>
Subject: Re: random: /dev/random often returns short reads
Date: Tue, 17 Jan 2017 18:34:21 +0100 [thread overview]
Message-ID: <09f2ce2d-3c84-bb12-560c-3208691d2c55@redhat.com> (raw)
In-Reply-To: <20170117171539.dadciiz2kfjtqrfk@thunk.org>
On 01/17/2017 06:15 PM, Theodore Ts'o wrote:
> On Tue, Jan 17, 2017 at 09:21:31AM +0100, Denys Vlasenko wrote:
>>> If someone wants to send me a patch, I'll happily take a look at it,
>>
>> Will something along these lines be accepted?
>
> The problem is that this won't work. In the cases that we're talking
> about, the entropy counter in the secondary pool is not zero, but
> close to zero, we'll still have short reads. And that's going to
> happen a fair amount of the time.
>
> Perhaps the best *hacky* solution would be to say, ok if the entropy
> count is less than some threshold, don't use the correct entropy
> calculation, but rather assume that all of the new bits won't land on
> top of existing entropy bits.
IOW, something like this:
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -653,6 +653,9 @@ static void credit_entropy_bits(struct
entropy_store *r, int nbits)
if (nfrac < 0) {
/* Debit */
entropy_count += nfrac;
+ } else if (entropy_count < ((8 * 8) << ENTROPY_SHIFT)) {
+ /* Credit, and the pool is almost empty */
+ entropy_count += nfrac;
} else {
/*
* Credit: we have to account for the possibility of
* overwriting already present entropy. Even in the
Want the patch? If yes, what name of the constant you prefer? How about
/* Has less than 8 bytes */
#define ALMOST_EMPTY_POOL_frac ((8 * 8) << ENTROPY_SHIFT)
next prev parent reply other threads:[~2017-01-17 17:59 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-16 18:50 random: /dev/random often returns short reads Denys Vlasenko
2017-01-16 18:52 ` Denys Vlasenko
2017-01-17 4:36 ` Theodore Ts'o
2017-01-17 8:21 ` Denys Vlasenko
2017-01-17 17:15 ` Theodore Ts'o
2017-01-17 17:34 ` Denys Vlasenko [this message]
2017-01-17 22:29 ` H. Peter Anvin
2017-01-17 23:41 ` Theodore Ts'o
2017-01-18 1:54 ` H. Peter Anvin
2017-01-18 15:44 ` Denys Vlasenko
2017-01-18 18:07 ` Theodore Ts'o
2017-01-19 21:45 ` Denys Vlasenko
2017-01-20 3:17 ` H. Peter Anvin
2017-02-15 17:55 ` Denys Vlasenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=09f2ce2d-3c84-bb12-560c-3208691d2c55@redhat.com \
--to=dvlasenk@redhat.com \
--cc=hpa@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=tytso@mit.edu \
--cc=vda.linux@googlemail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).