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 238/496] arm64: Relax ARM_SMCCC_ARCH_WORKAROUND_1 discovery
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

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

    From: Marc Zyngier <marc.zyngier@arm.com>

    [ Upstream commit e21da1c992007594d391e7b301779cf30f438691 ]

    A recent update to the ARM SMCCC ARCH_WORKAROUND_1 specification
    allows firmware to return a non zero, positive value to describe
    that although the mitigation is implemented at the higher exception
    level, the CPU on which the call is made is not affected.

    Let's relax the check on the return value from ARCH_WORKAROUND_1
    so that we only error out if the returned value is negative.

    Fixes: b092201e0020 ("arm64: Add ARM_SMCCC_ARCH_WORKAROUND_1 BP hardening support")
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/arm64/kernel/cpu_errata.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/arch/arm64/kernel/cpu_errata.c
    +++ b/arch/arm64/kernel/cpu_errata.c
    @@ -178,7 +178,7 @@ static int enable_smccc_arch_workaround_
    case PSCI_CONDUIT_HVC:
    arm_smccc_1_1_hvc(ARM_SMCCC_ARCH_FEATURES_FUNC_ID,
    ARM_SMCCC_ARCH_WORKAROUND_1, &res);
    - if (res.a0)
    + if ((int)res.a0 < 0)
    return 0;
    cb = call_hvc_arch_workaround_1;
    smccc_start = __smccc_workaround_1_hvc_start;
    @@ -188,7 +188,7 @@ static int enable_smccc_arch_workaround_
    case PSCI_CONDUIT_SMC:
    arm_smccc_1_1_smc(ARM_SMCCC_ARCH_FEATURES_FUNC_ID,
    ARM_SMCCC_ARCH_WORKAROUND_1, &res);
    - if (res.a0)
    + if ((int)res.a0 < 0)
    return 0;
    cb = call_smc_arch_workaround_1;
    smccc_start = __smccc_workaround_1_smc_start;

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