Re: [PATCH] init: call time_init() before rand_initialize()

From: Stafford Horne
Date: Fri May 13 2022 - 17:18:27 EST


On Thu, May 05, 2022 at 02:31:14AM +0200, Jason A. Donenfeld wrote:
> Currently time_init() is called before rand_initialize(), but
> rand_initialize() makes use of the timer on various platforms, and
> sometimes this timer needs to be initialized by time_init() first. In
> order to not return zero, reverse the order of these two calls. The
> block doing random initialization was right before time_init() before,
> so changing the order shouldn't have any complicated effects.
>
> Cc: Stafford Horne <shorne@xxxxxxxxx>
> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Jason A. Donenfeld <Jason@xxxxxxxxx>

I was thinking along the same lines when I looked into the OpenRISC issue
that we fixed discussed here:

- https://lore.kernel.org/all/Ym27sFdFZEt5QV0i@antec/

Though, I was not sure as to any dependency issues caused by changing the
order. Having it in -next and testing for a while should be able to
bring out any bug.

As for this patch:

Reviewed-by: Stafford Horne <shorne@xxxxxxxxx>

> ---
> Andrew - this file has no formal maintainer, but you've signed the most
> commits, so I'm CC'ing you. This has some interactions with my
> random.git tree, so unless there are objections, I'll queue it up there.
> -Jason
>
> init/main.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/init/main.c b/init/main.c
> index 98182c3c2c4b..e37ec99cf56d 100644
> --- a/init/main.c
> +++ b/init/main.c
> @@ -1035,6 +1035,7 @@ asmlinkage __visible void __init __no_sanitize_address start_kernel(void)
> softirq_init();
> timekeeping_init();
> kfence_init();
> + time_init();
>
> /*
> * For best initial stack canary entropy, prepare it after:
> @@ -1049,7 +1050,6 @@ asmlinkage __visible void __init __no_sanitize_address start_kernel(void)
> add_device_randomness(command_line, strlen(command_line));
> boot_init_stack_canary();
>
> - time_init();
> perf_event_init();
> profile_init();
> call_function_init();
> --
> 2.35.1
>