[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAHp75VcjiTFuUPHQJzVdL6Q-_UQUyZvs5La2tbrNW_ycg+YPbg@mail.gmail.com>
Date: Thu, 14 Jun 2018 11:59:54 +0300
From: Andy Shevchenko <andy.shevchenko@...il.com>
To: Thierry Escande <thierry.escande@...aro.org>
Cc: Andrew Morton <akpm@...ux-foundation.org>,
David Miller <davem@...emloft.net>,
Petr Mladek <pmladek@...e.com>,
Rasmus Villemoes <linux@...musvillemoes.dk>,
"Tobin C . Harding" <me@...in.cc>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v3] lib/test_printf.c: accept "ptrval" as valid result for
plain 'p' tests
On Wed, Jun 13, 2018 at 8:18 PM, Thierry Escande
<thierry.escande@...aro.org> 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____)" or "(ptrval)" instead
> (64-bit vs 32-bit).
> Since we cannot wait for the crng to be initialized for an undefined
> time, both plain 'p' tests now accept the strings "(____ptrval____)" or
> "(ptrval)" as a valid result and print a warning message.
>
LGTM.
Reviewed-by: Andy Shevchenko <andy.shevchenko@...il.com>
> Signed-off-by: Thierry Escande <thierry.escande@...aro.org>
> ---
>
> Changes in v3:
> - Use "(____ptrval____)" for 64-bit
> - Update commit message headline
>
> Changes in v2:
> - Remove wait_for_random_bytes() usage
> - Remove Acked-by from Tobin as the proposed solution is not the same
> anymore.
>
> lib/test_printf.c | 24 ++++++++++++++++++++++--
> 1 file changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/lib/test_printf.c b/lib/test_printf.c
> index 71ebfa43ad05..31f00b8ca657 100644
> --- a/lib/test_printf.c
> +++ b/lib/test_printf.c
> @@ -206,6 +206,7 @@ test_string(void)
> #define PTR_WIDTH 16
> #define PTR ((void *)0xffff0123456789ab)
> #define PTR_STR "ffff0123456789ab"
> +#define PTR_VAL_NO_CRNG "(____ptrval____)"
> #define ZEROS "00000000" /* hex 32 zero bits */
>
> static int __init
> @@ -216,7 +217,16 @@ plain_format(void)
>
> nchars = snprintf(buf, PLAIN_BUF_SIZE, "%p", PTR);
>
> - if (nchars != PTR_WIDTH || strncmp(buf, ZEROS, strlen(ZEROS)) != 0)
> + if (nchars != PTR_WIDTH)
> + return -1;
> +
> + if (strncmp(buf, PTR_VAL_NO_CRNG, PTR_WIDTH) == 0) {
> + pr_warn("crng possibly not yet initialized. plain 'p' buffer contains \"%s\"",
> + PTR_VAL_NO_CRNG);
> + return 0;
> + }
> +
> + if (strncmp(buf, ZEROS, strlen(ZEROS)) != 0)
> return -1;
>
> return 0;
> @@ -227,6 +237,7 @@ plain_format(void)
> #define PTR_WIDTH 8
> #define PTR ((void *)0x456789ab)
> #define PTR_STR "456789ab"
> +#define PTR_VAL_NO_CRNG "(ptrval)"
>
> static int __init
> plain_format(void)
> @@ -245,7 +256,16 @@ plain_hash(void)
>
> nchars = snprintf(buf, PLAIN_BUF_SIZE, "%p", PTR);
>
> - if (nchars != PTR_WIDTH || strncmp(buf, PTR_STR, PTR_WIDTH) == 0)
> + if (nchars != PTR_WIDTH)
> + return -1;
> +
> + if (strncmp(buf, PTR_VAL_NO_CRNG, PTR_WIDTH) == 0) {
> + pr_warn("crng possibly not yet initialized. plain 'p' buffer contains \"%s\"",
> + PTR_VAL_NO_CRNG);
> + return 0;
> + }
> +
> + if (strncmp(buf, PTR_STR, PTR_WIDTH) == 0)
> return -1;
>
> return 0;
> --
> 2.14.1
>
--
With Best Regards,
Andy Shevchenko
Powered by blists - more mailing lists