Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Feb 2015 17:20:26 -0800
From:      John-Mark Gurney <jmg@funkthat.com>
To:        arch@FreeBSD.org
Subject:   locks and kernel randomness...
Message-ID:  <20150224012026.GY46794@funkthat.com>

next in thread | raw e-mail | index | archive | help
I'm working on simplifying kernel randomness interfaces.  I would like
to get read of all weak random generators, and this means replacing
read_random and random(9) w/ effectively arc4rand(9) (to be replaced
by ChaCha or Keccak in the future).

The issue is that random(9) is called from any number of contexts, such
as the scheduler.  This makes locking a bit more interesting.  Currently,
both arc4rand(9) and yarrow/fortuna use a default mtx lock to protect
their state.  This obviously isn't compatible w/ the scheduler, and
possibly other calling contexts.

I have a patch[1] that unifies the random interface.  It converts a few
of the locks from mtx default to mtx spin to deal w/ this.

If/when this is accepted, my next plan is to convert away from arc4rand,
to either ChaCha or Keccak.  I already have another patch that converts
arc4rand and friends over to ChaCha.  This patch does use PCPU data
and sched_pin to help eliminate locks, but this does need more study.
We could either do a restartable loop (but there might be too much state
to safely do) or a critical section (though running chacha a bunch of
times could have impact).

[1] https://reviews.freebsd.org/D1956

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150224012026.GY46794>