lkml.org 
[lkml]   [2018]   [Jun]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 41/61] powerpc/64s: Wire up cpu_show_spectre_v2()
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

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

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

    commit d6fbe1c55c55c6937cbea3531af7da84ab7473c3 upstream.

    Add a definition for cpu_show_spectre_v2() to override the generic
    version. This has several permuations, though in practice some may not
    occur we cater for any combination.

    The most verbose is:

    Mitigation: Indirect branch serialisation (kernel only), Indirect
    branch cache disabled, ori31 speculation barrier enabled

    We don't treat the ori31 speculation barrier as a mitigation on its
    own, because it has to be *used* by code in order to be a mitigation
    and we don't know if userspace is doing that. So if that's all we see
    we say:

    Vulnerable, ori31 speculation barrier enabled

    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/powerpc/kernel/security.c | 33 +++++++++++++++++++++++++++++++++
    1 file changed, 33 insertions(+)

    --- a/arch/powerpc/kernel/security.c
    +++ b/arch/powerpc/kernel/security.c
    @@ -58,3 +58,36 @@ ssize_t cpu_show_spectre_v1(struct devic

    return sprintf(buf, "Vulnerable\n");
    }
    +
    +ssize_t cpu_show_spectre_v2(struct device *dev, struct device_attribute *attr, char *buf)
    +{
    + bool bcs, ccd, ori;
    + struct seq_buf s;
    +
    + seq_buf_init(&s, buf, PAGE_SIZE - 1);
    +
    + bcs = security_ftr_enabled(SEC_FTR_BCCTRL_SERIALISED);
    + ccd = security_ftr_enabled(SEC_FTR_COUNT_CACHE_DISABLED);
    + ori = security_ftr_enabled(SEC_FTR_SPEC_BAR_ORI31);
    +
    + if (bcs || ccd) {
    + seq_buf_printf(&s, "Mitigation: ");
    +
    + if (bcs)
    + seq_buf_printf(&s, "Indirect branch serialisation (kernel only)");
    +
    + if (bcs && ccd)
    + seq_buf_printf(&s, ", ");
    +
    + if (ccd)
    + seq_buf_printf(&s, "Indirect branch cache disabled");
    + } else
    + seq_buf_printf(&s, "Vulnerable");
    +
    + if (ori)
    + seq_buf_printf(&s, ", ori31 speculation barrier enabled");
    +
    + seq_buf_printf(&s, "\n");
    +
    + return s.len;
    +}

    \
     
     \ /
      Last update: 2018-06-05 19:13    [W:4.140 / U:0.208 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site