On Tue, 12 Jun 2018 10:39:13 +1000 "Tobin C. Harding" <m...@tobin.cc> wrote:
> Currently we must wait for enough entropy to become available before > hashed pointers can be printed. We can remove this wait by using the > hw RNG if available. > > Use hw RNG to get keying material. > > Cc: Steven Rostedt (VMware) <rost...@goodmis.org> Reviewed-by: Steven Rostedt (VMware) <rost...@goodmis.org> -- Steve > Suggested-by: Kees Cook <keesc...@chromium.org> > Signed-off-by: Tobin C. Harding <m...@tobin.cc> > --- > lib/vsprintf.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/lib/vsprintf.c b/lib/vsprintf.c > index a48aaa79d352..c445f9f28760 100644 > --- a/lib/vsprintf.c > +++ b/lib/vsprintf.c > @@ -1675,8 +1675,16 @@ static struct random_ready_callback random_ready = { > > static int __init initialize_ptr_random(void) > { > - int ret = add_random_ready_callback(&random_ready); > + int key_size = sizeof(ptr_key); > + int ret; > + > + /* Use hw RNG if available */ > + if (get_random_bytes_arch(&ptr_key, key_size) == key_size) { > + static_branch_disable(¬_filled_random_ptr_key); > + return 0; > + } > > + ret = add_random_ready_callback(&random_ready); > if (!ret) { > return 0; > } else if (ret == -EALREADY) {