arm64: Run ARCH_WORKAROUND_2 enabling code on all CPUs
authorMarc Zyngier <maz@kernel.org>
Thu, 16 Jul 2020 16:11:10 +0000 (17:11 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 1 Nov 2020 11:45:37 +0000 (12:45 +0100)
commitdfaa0f7d0832fdfd915f1bab5887323401d9b021
tree789bf18e3bdf11357e7c61b9edc8a366d3d2887a
parent0ccd5c2c60e0eba3f9cf624fb6b4d28c4aa8c84a
arm64: Run ARCH_WORKAROUND_2 enabling code on all CPUs

commit 39533e12063be7f55e3d6ae21ffe067799d542a4 upstream.

Commit 606f8e7b27bf ("arm64: capabilities: Use linear array for
detection and verification") changed the way we deal with per-CPU errata
by only calling the .matches() callback until one CPU is found to be
affected. At this point, .matches() stop being called, and .cpu_enable()
will be called on all CPUs.

This breaks the ARCH_WORKAROUND_2 handling, as only a single CPU will be
mitigated.

In order to address this, forcefully call the .matches() callback from a
.cpu_enable() callback, which brings us back to the original behaviour.

Fixes: 606f8e7b27bf ("arm64: capabilities: Use linear array for detection and verification")
Cc: <stable@vger.kernel.org>
Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/arm64/kernel/cpu_errata.c