Re: [PATCH] random: Move rand_initialize() earlier

From: Kees Cook
Date: Fri Oct 12 2018 - 10:45:52 EST


On Fri, Oct 12, 2018 at 7:29 AM, Theodore Y. Ts'o <tytso@xxxxxxx> wrote:
> On Thu, Oct 11, 2018 at 03:54:21PM -0700, Kees Cook wrote:
>> Right now rand_initialize() is run as an early_initcall(), but it only
>> depends on timekeeping_init() (for mixing ktime_get_real() into the
>> pools). However, the call to boot_init_stack_canary() for stack canary
>> initialization runs earlier, which triggers a warning at boot:
>>
>> random: get_random_bytes called from start_kernel+0x357/0x548 with crng_init=0
>>
>> Instead, this moves rand_initialize() to after timekeeping_init(), and moves
>> canary initialization here as well.
>>
>> Note that this warning may still remain for machines that do not have
>> UEFI RNG support (which initializes the RNG pools durting setup_arch()),
>> or for x86 machines without RDRAND (or booting without "random.trust=on"
>> or CONFIG_RANDOM_TRUST_CPU=y).
>>
>> Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx>
>
> This seems reasonable to me. Were you hoping to get this in for -rc8?
> It looks sane, and I don't see any _obvious_ unintended consequences
> of such a change, but it's rather late in the development cycle, and
> it isn't regression fix.

Yeah, for sure. I didn't mean this for 4.19. I assumed -next, and
likely further changes based on discussion, etc etc.

-Kees

--
Kees Cook
Pixel Security