lkml.org 
[lkml]   [2020]   [Jul]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 03/10] x86/boot: Allow a "silent" kaslr random byte fetch
    Date
    From: Kees Cook <keescook@chromium.org>

    Under earlyprintk, each RNG call produces a debug report line. When
    shuffling hundreds of functions, this is not useful information (each
    line is identical and tells us nothing new). Instead, allow for a NULL
    "purpose" to suppress the debug reporting.

    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Kristen Carlson Accardi <kristen@linux.intel.com>
    ---
    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.20.1
    \
     
     \ /
      Last update: 2020-07-17 19:02    [W:5.003 / U:0.312 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site