diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.9.21/0038-x86-spectre-Simplify-spectre_v2-command-line-parsing.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.9.21/0038-x86-spectre-Simplify-spectre_v2-command-line-parsing.patch | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.9.21/0038-x86-spectre-Simplify-spectre_v2-command-line-parsing.patch b/common/recipes-kernel/linux/linux-yocto-4.9.21/0038-x86-spectre-Simplify-spectre_v2-command-line-parsing.patch deleted file mode 100644 index ad179306..00000000 --- a/common/recipes-kernel/linux/linux-yocto-4.9.21/0038-x86-spectre-Simplify-spectre_v2-command-line-parsing.patch +++ /dev/null @@ -1,141 +0,0 @@ -From 825c7a1a9545787191c7dec21823a4b854dd8172 Mon Sep 17 00:00:00 2001 -From: KarimAllah Ahmed <karahmed@amazon.de> -Date: Thu, 1 Feb 2018 11:27:21 +0000 -Subject: [PATCH 38/42] x86/spectre: Simplify spectre_v2 command line parsing - -(cherry picked from commit 9005c6834c0ffdfe46afa76656bd9276cca864f6) - -[dwmw2: Use ARRAY_SIZE] - -Signed-off-by: KarimAllah Ahmed <karahmed@amazon.de> -Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> -Signed-off-by: Thomas Gleixner <tglx@linutronix.de> -Cc: peterz@infradead.org -Cc: bp@alien8.de -Link: https://lkml.kernel.org/r/1517484441-1420-3-git-send-email-dwmw@amazon.co.uk -Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> ---- - arch/x86/kernel/cpu/bugs.c | 86 ++++++++++++++++++++++++++++++---------------- - 1 file changed, 56 insertions(+), 30 deletions(-) - -diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c -index aec7daf..957ad44 100644 ---- a/arch/x86/kernel/cpu/bugs.c -+++ b/arch/x86/kernel/cpu/bugs.c -@@ -118,13 +118,13 @@ static inline const char *spectre_v2_module_string(void) { return ""; } - static void __init spec2_print_if_insecure(const char *reason) - { - if (boot_cpu_has_bug(X86_BUG_SPECTRE_V2)) -- pr_info("%s\n", reason); -+ pr_info("%s selected on command line.\n", reason); - } - - static void __init spec2_print_if_secure(const char *reason) - { - if (!boot_cpu_has_bug(X86_BUG_SPECTRE_V2)) -- pr_info("%s\n", reason); -+ pr_info("%s selected on command line.\n", reason); - } - - static inline bool retp_compiler(void) -@@ -139,42 +139,68 @@ static inline bool match_option(const char *arg, int arglen, const char *opt) - return len == arglen && !strncmp(arg, opt, len); - } - -+static const struct { -+ const char *option; -+ enum spectre_v2_mitigation_cmd cmd; -+ bool secure; -+} mitigation_options[] = { -+ { "off", SPECTRE_V2_CMD_NONE, false }, -+ { "on", SPECTRE_V2_CMD_FORCE, true }, -+ { "retpoline", SPECTRE_V2_CMD_RETPOLINE, false }, -+ { "retpoline,amd", SPECTRE_V2_CMD_RETPOLINE_AMD, false }, -+ { "retpoline,generic", SPECTRE_V2_CMD_RETPOLINE_GENERIC, false }, -+ { "auto", SPECTRE_V2_CMD_AUTO, false }, -+}; -+ - static enum spectre_v2_mitigation_cmd __init spectre_v2_parse_cmdline(void) - { - char arg[20]; -- int ret; -- -- ret = cmdline_find_option(boot_command_line, "spectre_v2", arg, -- sizeof(arg)); -- if (ret > 0) { -- if (match_option(arg, ret, "off")) { -- goto disable; -- } else if (match_option(arg, ret, "on")) { -- spec2_print_if_secure("force enabled on command line."); -- return SPECTRE_V2_CMD_FORCE; -- } else if (match_option(arg, ret, "retpoline")) { -- spec2_print_if_insecure("retpoline selected on command line."); -- return SPECTRE_V2_CMD_RETPOLINE; -- } else if (match_option(arg, ret, "retpoline,amd")) { -- if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD) { -- pr_err("retpoline,amd selected but CPU is not AMD. Switching to AUTO select\n"); -- return SPECTRE_V2_CMD_AUTO; -- } -- spec2_print_if_insecure("AMD retpoline selected on command line."); -- return SPECTRE_V2_CMD_RETPOLINE_AMD; -- } else if (match_option(arg, ret, "retpoline,generic")) { -- spec2_print_if_insecure("generic retpoline selected on command line."); -- return SPECTRE_V2_CMD_RETPOLINE_GENERIC; -- } else if (match_option(arg, ret, "auto")) { -+ int ret, i; -+ enum spectre_v2_mitigation_cmd cmd = SPECTRE_V2_CMD_AUTO; -+ -+ if (cmdline_find_option_bool(boot_command_line, "nospectre_v2")) -+ return SPECTRE_V2_CMD_NONE; -+ else { -+ ret = cmdline_find_option(boot_command_line, "spectre_v2", arg, -+ sizeof(arg)); -+ if (ret < 0) -+ return SPECTRE_V2_CMD_AUTO; -+ -+ for (i = 0; i < ARRAY_SIZE(mitigation_options); i++) { -+ if (!match_option(arg, ret, mitigation_options[i].option)) -+ continue; -+ cmd = mitigation_options[i].cmd; -+ break; -+ } -+ -+ if (i >= ARRAY_SIZE(mitigation_options)) { -+ pr_err("unknown option (%s). Switching to AUTO select\n", -+ mitigation_options[i].option); - return SPECTRE_V2_CMD_AUTO; - } - } - -- if (!cmdline_find_option_bool(boot_command_line, "nospectre_v2")) -+ if ((cmd == SPECTRE_V2_CMD_RETPOLINE || -+ cmd == SPECTRE_V2_CMD_RETPOLINE_AMD || -+ cmd == SPECTRE_V2_CMD_RETPOLINE_GENERIC) && -+ !IS_ENABLED(CONFIG_RETPOLINE)) { -+ pr_err("%s selected but not compiled in. Switching to AUTO select\n", -+ mitigation_options[i].option); - return SPECTRE_V2_CMD_AUTO; --disable: -- spec2_print_if_insecure("disabled on command line."); -- return SPECTRE_V2_CMD_NONE; -+ } -+ -+ if (cmd == SPECTRE_V2_CMD_RETPOLINE_AMD && -+ boot_cpu_data.x86_vendor != X86_VENDOR_AMD) { -+ pr_err("retpoline,amd selected but CPU is not AMD. Switching to AUTO select\n"); -+ return SPECTRE_V2_CMD_AUTO; -+ } -+ -+ if (mitigation_options[i].secure) -+ spec2_print_if_secure(mitigation_options[i].option); -+ else -+ spec2_print_if_insecure(mitigation_options[i].option); -+ -+ return cmd; - } - - /* Check for Skylake-like CPUs (for RSB handling) */ --- -2.7.4 - |