arm64: cpufeature: Account min_field_value when cheking secondaries for PAuth
authorVladimir Murzin <vladimir.murzin@arm.com>
Thu, 24 Feb 2022 12:49:50 +0000 (12:49 +0000)
committerWill Deacon <will@kernel.org>
Fri, 25 Feb 2022 13:38:51 +0000 (13:38 +0000)
In case, both boot_val and sec_val have value below min_field_value we
would wrongly report that address authentication is supported. It is
not a big issue because we enable address authentication based on boot
cpu (and check there is correct).

Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
Acked-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20220224124952.119612-2-vladimir.murzin@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/kernel/cpufeature.c

index e5f23dab1c8df8acc56a64d982cb065984167ecb..3271770b60d6635a715d90e4e49b8f2ac246d6b6 100644 (file)
@@ -1829,7 +1829,7 @@ static bool has_address_auth_cpucap(const struct arm64_cpu_capabilities *entry,
        /* Now check for the secondary CPUs with SCOPE_LOCAL_CPU scope */
        sec_val = cpuid_feature_extract_field(__read_sysreg_by_encoding(entry->sys_reg),
                                              entry->field_pos, entry->sign);
-       return sec_val == boot_val;
+       return (sec_val >= entry->min_field_value) && (sec_val == boot_val);
 }
 
 static bool has_address_auth_metacap(const struct arm64_cpu_capabilities *entry,