lkml.org 
[lkml]   [2018]   [May]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 047/496] powerpc/64s: Enhance the information in cpu_show_meltdown()
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

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

    From: Michael Ellerman <mpe@ellerman.id.au>

    commit ff348355e9c72493947be337bb4fae4fc1a41eba upstream.

    Now that we have the security feature flags we can make the
    information displayed in the "meltdown" file more informative.

    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/powerpc/include/asm/security_features.h | 1
    arch/powerpc/kernel/security.c | 30 +++++++++++++++++++++++++--
    2 files changed, 29 insertions(+), 2 deletions(-)

    --- a/arch/powerpc/include/asm/security_features.h
    +++ b/arch/powerpc/include/asm/security_features.h
    @@ -10,6 +10,7 @@


    extern unsigned long powerpc_security_features;
    +extern bool rfi_flush;

    static inline void security_ftr_set(unsigned long feature)
    {
    --- a/arch/powerpc/kernel/security.c
    +++ b/arch/powerpc/kernel/security.c
    @@ -6,6 +6,7 @@

    #include <linux/kernel.h>
    #include <linux/device.h>
    +#include <linux/seq_buf.h>

    #include <asm/security_features.h>

    @@ -19,8 +20,33 @@ unsigned long powerpc_security_features

    ssize_t cpu_show_meltdown(struct device *dev, struct device_attribute *attr, char *buf)
    {
    - if (rfi_flush)
    - return sprintf(buf, "Mitigation: RFI Flush\n");
    + bool thread_priv;
    +
    + thread_priv = security_ftr_enabled(SEC_FTR_L1D_THREAD_PRIV);
    +
    + if (rfi_flush || thread_priv) {
    + struct seq_buf s;
    + seq_buf_init(&s, buf, PAGE_SIZE - 1);
    +
    + seq_buf_printf(&s, "Mitigation: ");
    +
    + if (rfi_flush)
    + seq_buf_printf(&s, "RFI Flush");
    +
    + if (rfi_flush && thread_priv)
    + seq_buf_printf(&s, ", ");
    +
    + if (thread_priv)
    + seq_buf_printf(&s, "L1D private per thread");
    +
    + seq_buf_printf(&s, "\n");
    +
    + return s.len;
    + }
    +
    + if (!security_ftr_enabled(SEC_FTR_L1D_FLUSH_HV) &&
    + !security_ftr_enabled(SEC_FTR_L1D_FLUSH_PR))
    + return sprintf(buf, "Not affected\n");

    return sprintf(buf, "Vulnerable\n");
    }

    \
     
     \ /
      Last update: 2018-05-28 15:47    [W:4.187 / U:0.380 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site