lkml.org 
[lkml]   [2018]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 41/74] s390: move nobp parameter functions to nospec-branch.c
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Martin Schwidefsky <schwidefsky@de.ibm.com>


    [ 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 | 4 ++--
    arch/s390/kernel/alternative.c | 23 -----------------------
    arch/s390/kernel/nospec-branch.c | 27 +++++++++++++++++++++++++++
    3 files changed, 29 insertions(+), 25 deletions(-)

    --- a/arch/s390/kernel/Makefile
    +++ b/arch/s390/kernel/Makefile
    @@ -59,11 +59,11 @@ obj-y += debug.o irq.o ipl.o dis.o diag.
    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 fpu.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) += module.o
    obj-$(CONFIG_SMP) += smp.o
    --- a/arch/s390/kernel/alternative.c
    +++ b/arch/s390/kernel/alternative.c
    @@ -14,29 +14,6 @@ static int __init disable_alternative_in

    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;
    --- a/arch/s390/kernel/nospec-branch.c
    +++ b/arch/s390/kernel/nospec-branch.c
    @@ -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 */

    \
     
     \ /
      Last update: 2018-04-27 17:12    [W:4.181 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site