Re: Logging a kernel message when blocking on entropy

2020-09-22 Thread Paul Goyette

On Tue, 22 Sep 2020, Taylor R Campbell wrote:


Date: Tue, 22 Sep 2020 13:07:04 +0300
From: Andreas Gustafsson 

The following patch will cause a kernel message to be logged when a
process blocks on /dev/random or some other randomness API.  It may
help some users befuddled by pkgsrc builds blocking on /dev/random,
and I'm finding it useful when testing changes aimed at fixing PR
55659.

OK to commit?


I think this is fine, but it should be rate-limited the same way other
messages in kern_entropy.c are rate-limited.

if (ratecheck(&lasttime, &interval))
printf("...");


Not sure if that's really necessary.  There's a maximum of one message
per thread - ever, and even if every thread on the machine blocks, the
limit on number of threads stops you at 32k messages.  As soon as one
thread un-blocks, nothing will ever block again, so that feels like a
hard limit.

Of course, since the rate-limiting code is already written, it wouldn't
hurt to use it.  I'm just pointing out that there's a natural limit
inherent in the code!

:)


++--+---+
| Paul Goyette   | PGP Key fingerprint: | E-mail addresses: |
| (Retired)  | FA29 0E3B 35AF E8AE 6651 | p...@whooppee.com |
| Software Developer | 0786 F758 55DE 53BA 7731 | pgoye...@netbsd.org   |
++--+---+


Re: Logging a kernel message when blocking on entropy

2020-09-22 Thread Taylor R Campbell
> Date: Tue, 22 Sep 2020 13:07:04 +0300
> From: Andreas Gustafsson 
> 
> The following patch will cause a kernel message to be logged when a
> process blocks on /dev/random or some other randomness API.  It may
> help some users befuddled by pkgsrc builds blocking on /dev/random,
> and I'm finding it useful when testing changes aimed at fixing PR
> 55659.
> 
> OK to commit?

I think this is fine, but it should be rate-limited the same way other
messages in kern_entropy.c are rate-limited.

if (ratecheck(&lasttime, &interval))
printf("...");


Re: Sample boot.cfg for upgraded systems (rndseed & friends)

2020-09-22 Thread Greg Troxel

David Brownlee  writes:

> What would people think of installing an original copy of the etc set
> in /usr/share/examples/etc or similar - its 4.9M extracted and ~500K
> compressed and the ability to compare what is on the system to what it
> was shipped with would have saved me so much effort over the years :)

I personally unpack etc and xetc to /usr/netbsd-etc via the
INSTALL-NetBSD update script in etcmanage.  I would not be super keen on
adding a full etc by default, especially because then there's the issue
of managing it for upgrades.   But if it is unpacked someplace, and
updated on updates, and old files removed on updates via postinstall
fix, maybe.


signature.asc
Description: PGP signature


Re: Sample boot.cfg for upgraded systems (rndseed & friends)

2020-09-22 Thread David Brownlee
On Tue, 22 Sep 2020 at 18:02, Jonathan A. Kollasch
 wrote:
>
> On Tue, Sep 22, 2020 at 05:53:49PM +0100, David Brownlee wrote:
> > Should NetBSD be shipping a default boot.cfg in /usr/share/examples
> > (*) - thinking primarily of people who have upgraded from earlier
> > NetBSD versions.
> >
> > I was looking to add in rndseed & just generally sync with the latest
> > version but there doesn't seem to be a default example shipped with
> > the system
> >
>
> /boot.cfg is already shipped as part of the 'etc' set, and is handled by
> etcupdate(8) like any other configuration file.

Ah, thanks, excellent... then I have a different question :-p

What would people think of installing an original copy of the etc set
in /usr/share/examples/etc or similar - its 4.9M extracted and ~500K
compressed and the ability to compare what is on the system to what it
was shipped with would have saved me so much effort over the years :)


David


Re: Sample boot.cfg for upgraded systems (rndseed & friends)

2020-09-22 Thread Jonathan A. Kollasch
On Tue, Sep 22, 2020 at 05:53:49PM +0100, David Brownlee wrote:
> Should NetBSD be shipping a default boot.cfg in /usr/share/examples
> (*) - thinking primarily of people who have upgraded from earlier
> NetBSD versions.
> 
> I was looking to add in rndseed & just generally sync with the latest
> version but there doesn't seem to be a default example shipped with
> the system
> 

/boot.cfg is already shipped as part of the 'etc' set, and is handled by
etcupdate(8) like any other configuration file.


Sample boot.cfg for upgraded systems (rndseed & friends)

2020-09-22 Thread David Brownlee
Should NetBSD be shipping a default boot.cfg in /usr/share/examples
(*) - thinking primarily of people who have upgraded from earlier
NetBSD versions.

I was looking to add in rndseed & just generally sync with the latest
version but there doesn't seem to be a default example shipped with
the system

*: Or /usr/mdec, or /etc/... ?

David


Re: Logging a kernel message when blocking on entropy

2020-09-22 Thread Greg Troxel

Andreas Gustafsson  writes:

> The following patch will cause a kernel message to be logged when a
> process blocks on /dev/random or some other randomness API.  It may
> help some users befuddled by pkgsrc builds blocking on /dev/random,
> and I'm finding it useful when testing changes aimed at fixing PR
> 55659.

I'm in favor.

I have not dug in to the brave new entropy world.  I'm sure it's better
in many ways, but it also seems like people/systems that used to not end
up blocked before now do, apparently because some sources that used to
be considered ok (timing of events) no longer are.   So I think people
should be given clues - things appear a bit too difficult now.


signature.asc
Description: PGP signature


Re: Logging a kernel message when blocking on entropy

2020-09-22 Thread David Brownlee
On Tue, 22 Sep 2020 at 12:35, Manuel Bouyer  wrote:
>
> On Tue, Sep 22, 2020 at 02:31:50PM +0300, Andreas Gustafsson wrote:
> > Manuel Bouyer wrote:
> > > I'm not sure we want a user-triggerable kernel printf enabled by default.
> > > This could be used to DOS the system (especially on serial consoles)
> >
> > You can already trigger kernel printfs as an unprivileged user.
> > The first one that comes to mind is "sorry, pid %d was killed:
> > orphaned traced process", but I'm sure there are many others.
>
> I think we should find and remove theses (or make them conditional)
> instead of adding unconditional new ones

Maybe a standard way of rate limiting such messages, including
indicating how many were skipped due to rate limiting when the next
one gets printed?

David


Re: Logging a kernel message when blocking on entropy

2020-09-22 Thread Manuel Bouyer
On Tue, Sep 22, 2020 at 03:23:59PM +0300, Andreas Gustafsson wrote:
> Manuel Bouyer wrote:
> > > In -current, entropy does not run out.
> > 
> > So, how can it block ?
> 
> When there's too little entropy to begin with.  Once you have
> gathered enough, it unblocks, and never blocks again.
> 
> This is assuming default settings.  If you actually want entropy
> to run out, you can do "sysctl -w kern.entropy.depletion=1", but
> there's no good reason to ever do that outside of testing.
> -- 
> Andreas Gustafsson, g...@gson.org

On Tue, Sep 22, 2020 at 02:25:25PM +0200, Martin Husemann wrote:
> On Tue, Sep 22, 2020 at 02:12:19PM +0200, Manuel Bouyer wrote:
> > So, how can it block ?
> 
> When the system never had enough entropy.
> 
> I would consider this a bug in the setup of the system, but as of now we do
> not deal with it at all during installation, and on systems that are not
> installed (bootable images) it is even harder.
> 
> Sysinst will complain about it soon (and offer options to help fix it).

OK, so the printf should never happen when the system has been properly
configured. In this case I have no objection.

-- 
Manuel Bouyer 
 NetBSD: 26 ans d'experience feront toujours la difference
--


Re: Logging a kernel message when blocking on entropy

2020-09-22 Thread Martin Husemann
On Tue, Sep 22, 2020 at 02:12:19PM +0200, Manuel Bouyer wrote:
> So, how can it block ?

When the system never had enough entropy.

I would consider this a bug in the setup of the system, but as of now we do
not deal with it at all during installation, and on systems that are not
installed (bootable images) it is even harder.

Sysinst will complain about it soon (and offer options to help fix it).

Martin


Re: Logging a kernel message when blocking on entropy

2020-09-22 Thread Andreas Gustafsson
Manuel Bouyer wrote:
> > In -current, entropy does not run out.
> 
> So, how can it block ?

When there's too little entropy to begin with.  Once you have
gathered enough, it unblocks, and never blocks again.

This is assuming default settings.  If you actually want entropy
to run out, you can do "sysctl -w kern.entropy.depletion=1", but
there's no good reason to ever do that outside of testing.
-- 
Andreas Gustafsson, g...@gson.org


Re: Logging a kernel message when blocking on entropy

2020-09-22 Thread Manuel Bouyer
On Tue, Sep 22, 2020 at 03:05:34PM +0300, Andreas Gustafsson wrote:
> Manuel Bouyer wrote:
> > If you run a dd on /dev/random I guess the system will run out of
> > entropy pretty fast.
> 
> In -current, entropy does not run out.

So, how can it block ?

-- 
Manuel Bouyer 
 NetBSD: 26 ans d'experience feront toujours la difference
--


Re: Logging a kernel message when blocking on entropy

2020-09-22 Thread Andreas Gustafsson
Manuel Bouyer wrote:
> If you run a dd on /dev/random I guess the system will run out of
> entropy pretty fast.

In -current, entropy does not run out.
-- 
Andreas Gustafsson, g...@gson.org


Re: Logging a kernel message when blocking on entropy

2020-09-22 Thread Manuel Bouyer
On Tue, Sep 22, 2020 at 02:50:37PM +0300, Andreas Gustafsson wrote:
> Manuel Bouyer wrote:
> > I think we should find and remove theses (or make them conditional)
> > instead of adding unconditional new ones
> 
> It would already be conditional in the sense that it's only printed if
> the system has no entropy.  If a multi-user system is lacking entropy,
> a user spamming the console about it is doing the administrator a
> favor.

If you run a dd on /dev/random I guess the system will run out of
entropy pretty fast.

-- 
Manuel Bouyer 
 NetBSD: 26 ans d'experience feront toujours la difference
--


Re: Logging a kernel message when blocking on entropy

2020-09-22 Thread Andreas Gustafsson
Manuel Bouyer wrote:
> I think we should find and remove theses (or make them conditional)
> instead of adding unconditional new ones

It would already be conditional in the sense that it's only printed if
the system has no entropy.  If a multi-user system is lacking entropy,
a user spamming the console about it is doing the administrator a
favor.
-- 
Andreas Gustafsson, g...@gson.org


Re: Logging a kernel message when blocking on entropy

2020-09-22 Thread Manuel Bouyer
On Tue, Sep 22, 2020 at 02:31:50PM +0300, Andreas Gustafsson wrote:
> Manuel Bouyer wrote:
> > I'm not sure we want a user-triggerable kernel printf enabled by default.
> > This could be used to DOS the system (especially on serial consoles)
> 
> You can already trigger kernel printfs as an unprivileged user.
> The first one that comes to mind is "sorry, pid %d was killed:
> orphaned traced process", but I'm sure there are many others.

I think we should find and remove theses (or make them conditional)
instead of adding unconditional new ones

-- 
Manuel Bouyer 
 NetBSD: 26 ans d'experience feront toujours la difference
--


Re: Logging a kernel message when blocking on entropy

2020-09-22 Thread Andreas Gustafsson
Manuel Bouyer wrote:
> I'm not sure we want a user-triggerable kernel printf enabled by default.
> This could be used to DOS the system (especially on serial consoles)

You can already trigger kernel printfs as an unprivileged user.
The first one that comes to mind is "sorry, pid %d was killed:
orphaned traced process", but I'm sure there are many others.
-- 
Andreas Gustafsson, g...@gson.org


Re: Logging a kernel message when blocking on entropy

2020-09-22 Thread Manuel Bouyer
On Tue, Sep 22, 2020 at 01:07:04PM +0300, Andreas Gustafsson wrote:
> All,
> 
> The following patch will cause a kernel message to be logged when a
> process blocks on /dev/random or some other randomness API.  It may
> help some users befuddled by pkgsrc builds blocking on /dev/random,
> and I'm finding it useful when testing changes aimed at fixing PR
> 55659.
> 
> OK to commit?

I'm not sure we want a user-triggerable kernel printf enabled by default.
This could be used to DOS the system (especially on serial consoles)

-- 
Manuel Bouyer 
 NetBSD: 26 ans d'experience feront toujours la difference
--


Logging a kernel message when blocking on entropy

2020-09-22 Thread Andreas Gustafsson
All,

The following patch will cause a kernel message to be logged when a
process blocks on /dev/random or some other randomness API.  It may
help some users befuddled by pkgsrc builds blocking on /dev/random,
and I'm finding it useful when testing changes aimed at fixing PR
55659.

OK to commit?

Index: src/sys/kern/kern_entropy.c
===
RCS file: /bracket/repo/src/sys/kern/kern_entropy.c,v
retrieving revision 1.23
diff -u -r1.23 kern_entropy.c
--- src/sys/kern/kern_entropy.c 14 Aug 2020 00:53:16 -  1.23
+++ src/sys/kern/kern_entropy.c 20 Sep 2020 13:53:46 -
@@ -1297,6 +1297,9 @@
 
/* Wait for some entropy to come in and try again.  */
KASSERT(E->stage >= ENTROPY_WARM);
+   printf("entropy: pid %d (%s) blocking due to lack of entropy\n",
+  curproc->p_pid, curproc->p_comm);
+
if (ISSET(flags, ENTROPY_SIG)) {
error = cv_wait_sig(&E->cv, &E->lock);
if (error)

-- 
Andreas Gustafsson, g...@gson.org