On Wed, Oct 13, 2021 at 10:57 AM Kees Cook <keescook@xxxxxxxxxxxx> wrote: > > Under earlyprintk, each RNG call produces a debug report line. To support > the future FGKASLR feature, which will fetch random bytes during function > shuffling, this is not useful information (each line is identical and > tells us nothing new), needlessly spamming the console. Instead, allow > for a NULL "purpose" to suppress the debug reporting. Reviewed-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx> > > Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx> > --- > arch/x86/lib/kaslr.c | 18 ++++++++++++------ > 1 file changed, 12 insertions(+), 6 deletions(-) > > diff --git a/arch/x86/lib/kaslr.c b/arch/x86/lib/kaslr.c > index a53665116458..2b3eb8c948a3 100644 > --- a/arch/x86/lib/kaslr.c > +++ b/arch/x86/lib/kaslr.c > @@ -56,11 +56,14 @@ unsigned long kaslr_get_random_long(const char *purpose) > unsigned long raw, random = get_boot_seed(); > bool use_i8254 = true; > > - debug_putstr(purpose); > - debug_putstr(" KASLR using"); > + if (purpose) { > + debug_putstr(purpose); > + debug_putstr(" KASLR using"); > + } > > if (has_cpuflag(X86_FEATURE_RDRAND)) { > - debug_putstr(" RDRAND"); > + if (purpose) > + debug_putstr(" RDRAND"); > if (rdrand_long(&raw)) { > random ^= raw; > use_i8254 = false; > @@ -68,7 +71,8 @@ unsigned long kaslr_get_random_long(const char *purpose) > } > > if (has_cpuflag(X86_FEATURE_TSC)) { > - debug_putstr(" RDTSC"); > + if (purpose) > + debug_putstr(" RDTSC"); > raw = rdtsc(); > > random ^= raw; > @@ -76,7 +80,8 @@ unsigned long kaslr_get_random_long(const char *purpose) > } > > if (use_i8254) { > - debug_putstr(" i8254"); > + if (purpose) > + debug_putstr(" i8254"); > random ^= i8254(); > } > > @@ -86,7 +91,8 @@ unsigned long kaslr_get_random_long(const char *purpose) > : "a" (random), "rm" (mix_const)); > random += raw; > > - debug_putstr("...\n"); > + if (purpose) > + debug_putstr("...\n"); > > return random; > } > -- > 2.30.2 > -- Thanks, ~Nick Desaulniers