• Gary Hook's avatar
    x86/mm/mem_encrypt: Disable all instrumentation for early SME setup · 489e5d8c
    Gary Hook authored
    [ Upstream commit b51ce3744f115850166f3d6c292b9c8cb849ad4f ]
    
    Enablement of AMD's Secure Memory Encryption feature is determined very
    early after start_kernel() is entered. Part of this procedure involves
    scanning the command line for the parameter 'mem_encrypt'.
    
    To determine intended state, the function sme_enable() uses library
    functions cmdline_find_option() and strncmp(). Their use occurs early
    enough such that it cannot be assumed that any instrumentation subsystem
    is initialized.
    
    For example, making calls to a KASAN-instrumented function before KASAN
    is set up will result in the use of uninitialized memory and a boot
    failure.
    
    When AMD's SME support is enabled, conditionally disable instrumentation
    of these dependent functions in lib/string.c and arch/x86/lib/cmdline.c.
    
     [ bp: Get rid of intermediary nostackp var and cleanup whitespace. ]
    
    Fixes: aca20d54 ("x86/mm: Add support to make use of Secure Memory Encryption")
    Reported-by: 's avatarLi RongQing <lirongqing@baidu.com>
    Signed-off-by: 's avatarGary R Hook <gary.hook@amd.com>
    Signed-off-by: 's avatarBorislav Petkov <bp@suse.de>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Boris Brezillon <bbrezillon@kernel.org>
    Cc: Coly Li <colyli@suse.de>
    Cc: "dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Kent Overstreet <kent.overstreet@gmail.com>
    Cc: "luto@kernel.org" <luto@kernel.org>
    Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: "mingo@redhat.com" <mingo@redhat.com>
    Cc: "peterz@infradead.org" <peterz@infradead.org>
    Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/155657657552.7116.18363762932464011367.stgit@sosrh3.amd.comSigned-off-by: 's avatarSasha Levin <sashal@kernel.org>
    489e5d8c