From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: "Jason A. Donenfeld" <Jason@zx2c4.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
"Linux Crypto Mailing List" <linux-crypto@vger.kernel.org>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Peter Zijlstra" <peterz@infradead.org>,
"Theodore Ts'o" <tytso@mit.edu>,
"Sultan Alsawaf" <sultan@kerneltoast.com>,
"Jonathan Neuschäfer" <j.neuschaefer@gmx.net>,
"Dominik Brodowski" <linux@dominikbrodowski.net>
Subject: Re: [PATCH v6] random: defer fast pool mixing to worker
Date: Fri, 11 Feb 2022 17:58:57 +0100 [thread overview]
Message-ID: <YgaV0UZO1KfmtLLh@linutronix.de> (raw)
In-Reply-To: <CAHmME9rC_q4LGq2JaAAeGbtRA2cibTe9bnvhMLng+QnzAy2DVg@mail.gmail.com>
On 2022-02-11 17:50:34 [+0100], Jason A. Donenfeld wrote:
> Hi Sebastian,
Hi Jason,
> > I *think* we could drop that "fast_pool !=
> > this_cpu_ptr(&irq_randomness)" check at the top since that cmpxchg will
> > save us and redo the loop. But if I remember correctly you worried about
> > fast_pool->pool being modified (which is only a corner case if we are on
> > the other CPU while the orig CPU is back again). Either way, it would be
> > random and we would not consume more entropy.
>
> No, we cannot, and "it's all random anyway so who cares if we corrupt
> things!" is not rigorous, as entropy may actually be thrown away as
> it's moved between words on each mix. If we're not running on the same
> CPU, one CPU can corrupt the other's view of fast pool before updating
> count. We must keep this.
Okay, I assumed something like that.
> > So if we have to keep this then please swap that migrate_disable() with
> > local_irq_disable(). Otherwise PeterZ will yell at me.
>
> Okay, I'll do that then, and then in the process get rid of the
> cmpxchg loop since it's no longer required.
So the only reason why we have that atomic_t is for rare case where run
on the remote CPU and need to remove the upper bit in the counter?
> > > if (unlikely(crng_init == 0)) {
> > > - if (fast_pool->count >= 64 &&
> > > + if (new_count >= 64 &&
> > > crng_fast_load(fast_pool->pool, sizeof(fast_pool->pool)) > 0) {
> > > - fast_pool->count = 0;
> > > + atomic_set(&fast_pool->count, 0);
> > > fast_pool->last = now;
> >
> > I'm fine if we keep this as is for now.
> > What do we do here vs RT? I suggested this
> > https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-rt-devel.git/commit/?id=a2d2d54409481aa23a3e11ab9559a843e36a79ec
> >
> > Is this doable?
>
> It might be, but last time I checked it seemed problematic. As I
> mentioned in an earlier thread, I'll take a look again at that next
> week after this patch here settles. Haven't forgotten.
Ah, cheers.
> v+1 coming up with irqs disabled.
>
> Jason
Sebastian
next prev parent reply other threads:[~2022-02-11 16:59 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-11 13:08 [PATCH v5] random: defer fast pool mixing to worker Jason A. Donenfeld
2022-02-11 15:00 ` Sebastian Andrzej Siewior
2022-02-11 16:25 ` [PATCH v6] " Jason A. Donenfeld
2022-02-11 16:44 ` Sebastian Andrzej Siewior
2022-02-11 16:50 ` Jason A. Donenfeld
2022-02-11 16:58 ` Sebastian Andrzej Siewior [this message]
2022-02-11 17:00 ` Jason A. Donenfeld
2022-02-11 17:15 ` Sebastian Andrzej Siewior
2022-02-11 17:17 ` Jason A. Donenfeld
2022-02-11 17:26 ` Sebastian Andrzej Siewior
2022-02-13 21:04 ` Jason A. Donenfeld
2022-02-14 10:19 ` Jason A. Donenfeld
2022-02-13 17:37 ` Jason A. Donenfeld
2022-02-14 9:16 ` Sebastian Andrzej Siewior
2022-02-14 10:17 ` Jason A. Donenfeld
2022-02-14 11:16 ` Sebastian Andrzej Siewior
2022-02-14 14:47 ` Jason A. Donenfeld
2022-02-11 17:07 ` [PATCH v7] " Jason A. Donenfeld
2022-02-11 17:20 ` Sultan Alsawaf
2022-02-11 17:24 ` Sebastian Andrzej Siewior
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=YgaV0UZO1KfmtLLh@linutronix.de \
--to=bigeasy@linutronix.de \
--cc=Jason@zx2c4.com \
--cc=j.neuschaefer@gmx.net \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@dominikbrodowski.net \
--cc=peterz@infradead.org \
--cc=sultan@kerneltoast.com \
--cc=tglx@linutronix.de \
--cc=tytso@mit.edu \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.