2022-05-09 07:31:05

by Jason A. Donenfeld

[permalink] [raw]
Subject: [PATCH] init: call time_init() before rand_initialize()

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 <[email protected]>
Cc: Andrew Morton <[email protected]>
Signed-off-by: Jason A. Donenfeld <[email protected]>
---
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



2022-05-14 01:50:58

by Stafford Horne

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

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 <[email protected]>
> Cc: Andrew Morton <[email protected]>
> Signed-off-by: Jason A. Donenfeld <[email protected]>

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 <[email protected]>

> ---
> 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
>