lkml.org 
[lkml]   [2019]   [Dec]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.19 43/79] powerpc/security: Fix wrong message when RFI Flush is disable
    Date
    From: "Gustavo L. F. Walbon" <gwalbon@linux.ibm.com>

    [ Upstream commit 4e706af3cd8e1d0503c25332b30cad33c97ed442 ]

    The issue was showing "Mitigation" message via sysfs whatever the
    state of "RFI Flush", but it should show "Vulnerable" when it is
    disabled.

    If you have "L1D private" feature enabled and not "RFI Flush" you are
    vulnerable to meltdown attacks.

    "RFI Flush" is the key feature to mitigate the meltdown whatever the
    "L1D private" state.

    SEC_FTR_L1D_THREAD_PRIV is a feature for Power9 only.

    So the message should be as the truth table shows:

    CPU | L1D private | RFI Flush | sysfs
    ----|-------------|-----------|-------------------------------------
    P9 | False | False | Vulnerable
    P9 | False | True | Mitigation: RFI Flush
    P9 | True | False | Vulnerable: L1D private per thread
    P9 | True | True | Mitigation: RFI Flush, L1D private per thread
    P8 | False | False | Vulnerable
    P8 | False | True | Mitigation: RFI Flush

    Output before this fix:
    # cat /sys/devices/system/cpu/vulnerabilities/meltdown
    Mitigation: RFI Flush, L1D private per thread
    # echo 0 > /sys/kernel/debug/powerpc/rfi_flush
    # cat /sys/devices/system/cpu/vulnerabilities/meltdown
    Mitigation: L1D private per thread

    Output after fix:
    # cat /sys/devices/system/cpu/vulnerabilities/meltdown
    Mitigation: RFI Flush, L1D private per thread
    # echo 0 > /sys/kernel/debug/powerpc/rfi_flush
    # cat /sys/devices/system/cpu/vulnerabilities/meltdown
    Vulnerable: L1D private per thread

    Signed-off-by: Gustavo L. F. Walbon <gwalbon@linux.ibm.com>
    Signed-off-by: Mauro S. M. Rodrigues <maurosr@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20190502210907.42375-1-gwalbon@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/powerpc/kernel/security.c | 16 ++++++----------
    1 file changed, 6 insertions(+), 10 deletions(-)

    diff --git a/arch/powerpc/kernel/security.c b/arch/powerpc/kernel/security.c
    index a4354c4f6bc50..6a3dde9587ccb 100644
    --- a/arch/powerpc/kernel/security.c
    +++ b/arch/powerpc/kernel/security.c
    @@ -134,26 +134,22 @@ ssize_t cpu_show_meltdown(struct device *dev, struct device_attribute *attr, cha

    thread_priv = security_ftr_enabled(SEC_FTR_L1D_THREAD_PRIV);

    - if (rfi_flush || thread_priv) {
    + if (rfi_flush) {
    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, ", ");
    -
    + seq_buf_printf(&s, "Mitigation: RFI Flush");
    if (thread_priv)
    - seq_buf_printf(&s, "L1D private per thread");
    + seq_buf_printf(&s, ", L1D private per thread");

    seq_buf_printf(&s, "\n");

    return s.len;
    }

    + if (thread_priv)
    + return sprintf(buf, "Vulnerable: L1D private per thread\n");
    +
    if (!security_ftr_enabled(SEC_FTR_L1D_FLUSH_HV) &&
    !security_ftr_enabled(SEC_FTR_L1D_FLUSH_PR))
    return sprintf(buf, "Not affected\n");
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-12-11 16:28    [W:4.174 / U:0.096 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site