lkml.org 
[lkml]   [2022]   [May]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.17 068/111] init: call time_init() before rand_initialize()
    Date
    From: "Jason A. Donenfeld" <Jason@zx2c4.com>

    commit fe222a6ca2d53c38433cba5d3be62a39099e708e upstream.

    Currently time_init() is called after 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 for random_get_entropy() to not return zero during early boot when
    it's potentially used as an entropy source, 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: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Stafford Horne <shorne@gmail.com>
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    init/main.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    --- a/init/main.c
    +++ b/init/main.c
    @@ -1035,11 +1035,13 @@ asmlinkage __visible void __init __no_sa
    softirq_init();
    timekeeping_init();
    kfence_init();
    + time_init();

    /*
    * For best initial stack canary entropy, prepare it after:
    * - setup_arch() for any UEFI RNG entropy and boot cmdline access
    * - timekeeping_init() for ktime entropy used in rand_initialize()
    + * - time_init() for making random_get_entropy() work on some platforms
    * - rand_initialize() to get any arch-specific entropy like RDRAND
    * - add_latent_entropy() to get any latent entropy
    * - adding command line entropy
    @@ -1049,7 +1051,6 @@ asmlinkage __visible void __init __no_sa
    add_device_randomness(command_line, strlen(command_line));
    boot_init_stack_canary();

    - time_init();
    perf_event_init();
    profile_init();
    call_function_init();

    \
     
     \ /
      Last update: 2022-05-27 13:45    [W:4.030 / U:0.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site