OSDN Git Service

s390: move nobp parameter functions to nospec-branch.c
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 27 Apr 2018 05:36:57 +0000 (07:36 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 29 Apr 2018 05:50:03 +0000 (07:50 +0200)
[ Upstream commit b2e2f43a01bace1a25bdbae04c9f9846882b727a ]

Keep the code for the nobp parameter handling with the code for
expolines. Both are related to the spectre v2 mitigation.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/s390/kernel/Makefile
arch/s390/kernel/alternative.c
arch/s390/kernel/nospec-branch.c

index 9c9cf53..8ccfbf2 100644 (file)
@@ -45,11 +45,11 @@ obj-y       += debug.o irq.o ipl.o dis.o diag.o sclp.o vdso.o
 obj-y  += sysinfo.o jump_label.o lgr.o os_info.o machine_kexec.o pgm_check.o
 obj-y  += runtime_instr.o cache.o dumpstack.o
 obj-y  += entry.o reipl.o relocate_kernel.o alternative.o
+obj-y  += nospec-branch.o
 
 extra-y                                += head.o head64.o vmlinux.lds
 
-obj-$(CONFIG_EXPOLINE)         += nospec-branch.o
-CFLAGS_REMOVE_expoline.o       += $(CC_FLAGS_EXPOLINE)
+CFLAGS_REMOVE_nospec-branch.o  += $(CC_FLAGS_EXPOLINE)
 
 obj-$(CONFIG_MODULES)          += s390_ksyms.o module.o
 obj-$(CONFIG_SMP)              += smp.o
index ed21de9..f5060af 100644 (file)
@@ -14,29 +14,6 @@ static int __init disable_alternative_instructions(char *str)
 
 early_param("noaltinstr", disable_alternative_instructions);
 
-static int __init nobp_setup_early(char *str)
-{
-       bool enabled;
-       int rc;
-
-       rc = kstrtobool(str, &enabled);
-       if (rc)
-               return rc;
-       if (enabled && test_facility(82))
-               __set_facility(82, S390_lowcore.alt_stfle_fac_list);
-       else
-               __clear_facility(82, S390_lowcore.alt_stfle_fac_list);
-       return 0;
-}
-early_param("nobp", nobp_setup_early);
-
-static int __init nospec_setup_early(char *str)
-{
-       __clear_facility(82, S390_lowcore.alt_stfle_fac_list);
-       return 0;
-}
-early_param("nospec", nospec_setup_early);
-
 struct brcl_insn {
        u16 opc;
        s32 disp;
index 57f55c2..3ce59d0 100644 (file)
@@ -3,6 +3,31 @@
 #include <asm/facility.h>
 #include <asm/nospec-branch.h>
 
+static int __init nobp_setup_early(char *str)
+{
+       bool enabled;
+       int rc;
+
+       rc = kstrtobool(str, &enabled);
+       if (rc)
+               return rc;
+       if (enabled && test_facility(82))
+               __set_facility(82, S390_lowcore.alt_stfle_fac_list);
+       else
+               __clear_facility(82, S390_lowcore.alt_stfle_fac_list);
+       return 0;
+}
+early_param("nobp", nobp_setup_early);
+
+static int __init nospec_setup_early(char *str)
+{
+       __clear_facility(82, S390_lowcore.alt_stfle_fac_list);
+       return 0;
+}
+early_param("nospec", nospec_setup_early);
+
+#ifdef CONFIG_EXPOLINE
+
 int nospec_call_disable = IS_ENABLED(CONFIG_EXPOLINE_OFF);
 int nospec_return_disable = !IS_ENABLED(CONFIG_EXPOLINE_FULL);
 
@@ -99,3 +124,5 @@ void __init nospec_init_branches(void)
        nospec_call_revert(__nospec_call_start, __nospec_call_end);
        nospec_return_revert(__nospec_return_start, __nospec_return_end);
 }
+
+#endif /* CONFIG_EXPOLINE */