lkml.org 
[lkml]   [2018]   [Jun]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH RESEND] lib/test_printf.c: call wait_for_random_bytes() before plain %p tests
From
Date
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
>>>

\
 
 \ /
  Last update: 2018-06-22 23:51    [W:0.098 / U:0.924 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site