Re: [PATCH RESEND] lib/test_printf.c: call wait_for_random_bytes() before plain %p tests

From: Petr Mladek
Date: Fri Jun 08 2018 - 04:04:51 EST


On Thu 2018-06-07 20:47:25, Thierry Escande wrote:
> Hi Petr,
>
> On 07/06/2018 14:24, Petr Mladek wrote:
> > On Mon 2018-06-04 13:37:08, Thierry Escande wrote:
> > > If the test_printf module is loaded before the crng is initialized, the
> > > plain 'p' tests will fail because the printed address will not be hashed
> > > and the buffer will contain '(ptrval)' instead.
> > > This patch adds a call to wait_for_random_bytes() before plain 'p' tests
> > > to make sure the crng is initialized.
> >
> > Hmm, my system did not boot with this patch and
> > CONFIG_TEST_PRINTF=y
> >
> > I guess that there was not enough entropy. It is basically a deadlock.
> > The build-in module init calls are called when SMP is enabled but
> > there is no real activity and the init calls are called sequentially.
> > Therefore there is nothing that could produce some entropy, ...
> >
> > I suggest to skip the test when crng is not ready.
>
> Thanks for pointing this out.
>
> The issue is that the crng_ready() is not available outside of random.c.
> I'll leave the call to wait_for_random_bytes() if test_printf is compiled as
> a module and use add_random_ready_callback() to check if crng is initialized
> otherwise. Does that sound ok to you?

Great, I was not aware of add_random_ready_callback().

I suggest to make the decision in test_printf_init()
and run all tests either as the callback or immediately.

Best Regards,
Petr