Re: Linux 5.3-rc8
From: Lennart Poettering
Date: Tue Sep 17 2019 - 13:42:23 EST
On Di, 17.09.19 09:23, Linus Torvalds (torvalds@xxxxxxxxxxxxxxxxxxxx) wrote:
> On Tue, Sep 17, 2019 at 9:08 AM Lennart Poettering <mzxreary@xxxxxxxxxxx> wrote:
> >
> > Here's what I'd propose:
>
> So I think this is ok, but I have another proposal. Before I post that
> one, though, I just wanted to point out:
>
> > 1) Add GRND_INSECURE to get those users of getrandom() who do not need
> > high quality entropy off its use (systemd has uses for this, for
> > seeding hash tables for example), thus reducing the places where
> > things might block.
>
> I really think that trhe logic should be the other way around.
>
> The getrandom() users that don't need high quality entropy are the
> ones that don't really think about this, and so _they_ shouldn't be
> the ones that have to explicitly state anything. To those users,
> "random is random". By definition they don't much care, and quite
> possibly they don't even know what "entropy" really means in that
> context.
So I think people nowadays prefer getrandom() over /dev/urandom
primarily because of the noisy logging the kernel does when you use
the latter on a non-initialized pool. If that'd be dropped then I am
pretty sure that the porting from /dev/urandom to getrandom() you see
in various projects (such as gdm/x11) would probably not take place.
In fact, speaking for systemd: the noisy logging in the kernel is the
primary (actually: only) reason that we prefer using RDRAND (if
available) over /dev/urandom if we need "medium quality" random
numbers, for example to seed hash tables and such. If the log message
wasn't there we wouldn't be tempted to bother with RDRAND and would
just use /dev/urandom like we used to for that.
> > 2) Add a kernel log message if a getrandom(0) client hung for 15s or
> > more, explaining the situation briefly, but not otherwise changing
> > behaviour.
>
> The problem is that when you have some graphical boot, you'll not even
> see the kernel messages ;(
Well, but as mentioned, there's infrastructure for this, that's why I
suggested changing systemd-random-seed.service.
We can make boot hang in "sane", discoverable way.
The reason why I think this should also be logged by the kernel since
people use netconsole and pstore and whatnot and they should see this
there. If systemd with its infrastructure brings this to screen via
plymouth then this wouldn't help people who debug much more low-level.
(I mean, there have been requests to add a logic to systemd that
refuses booting â or delays it â if the system has a battery and it is
nearly empty. I am pretty sure adding a cleanm discoverable concept of
"uh, i can't boot for a good reason which is this" wouldn't be the
worst of ideas)
Lennart
--
Lennart Poettering, Berlin