Messages in this thread | | | Subject | Re: [PATCH RESEND] lib/test_printf.c: call wait_for_random_bytes() before plain %p tests | From | Thierry Escande <> | Date | Fri, 22 Jun 2018 23:50:20 +0200 |
| |
On 22/06/2018 22:53, Steven Rostedt wrote: > On Thu, Jun 07, 2018 at 02:24:34PM +0200, 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 > > And neither does my test box. It killed my tests I was running, as one of the > configs I test has this set. > > It appears that Andrew pulled it in and sent it to Linus, as it is in > 4.18-rc1, and I need to now revert this patch to make my tests work.
This patch has been superseded with a v2 and a v3 pushed into Petr printk.git tree (https://git.kernel.org/pub/scm/linux/kernel/git/pmladek/printk.git/commit/?h=for-4.19&id=ce041c43f22298485122bab15c14d062383fbc67). Sorry for the mess...
Regards, Thierry
> > -- Steve > > >> >> 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. >> >> Best Regards, >> Petr >> >>> Signed-off-by: Thierry Escande <thierry.escande@linaro.org> >>> Acked-by: Tobin C. Harding <me@tobin.cc> >>> --- >>> lib/test_printf.c | 7 +++++++ >>> 1 file changed, 7 insertions(+) >>> >>> diff --git a/lib/test_printf.c b/lib/test_printf.c >>> index 71ebfa43ad05..839be9385a8a 100644 >>> --- a/lib/test_printf.c >>> +++ b/lib/test_printf.c >>> @@ -260,6 +260,13 @@ plain(void) >>> { >>> int err; >>> >>> + /* >>> + * Make sure crng is ready. Otherwise we get "(ptrval)" instead >>> + * of a hashed address when printing '%p' in plain_hash() and >>> + * plain_format(). >>> + */ >>> + wait_for_random_bytes(); >>> + >>> err = plain_hash(); >>> if (err) { >>> pr_warn("plain 'p' does not appear to be hashed\n"); >>> -- >>> 2.14.1 >>>
| |