linux/arch/arm64
James Morse dd8a1f1348 arm64: ftrace: Ensure synchronisation in PLT setup for Neoverse-N1 #1542419
CPUs affected by Neoverse-N1 #1542419 may execute a stale instruction if
it was recently modified. The affected sequence requires freshly written
instructions to be executable before a branch to them is updated.

There are very few places in the kernel that modify executable text,
all but one come with sufficient synchronisation:
 * The module loader's flush_module_icache() calls flush_icache_range(),
   which does a kick_all_cpus_sync()
 * bpf_int_jit_compile() calls flush_icache_range().
 * Kprobes calls aarch64_insn_patch_text(), which does its work in
   stop_machine().
 * static keys and ftrace both patch between nops and branches to
   existing kernel code (not generated code).

The affected sequence is the interaction between ftrace and modules.
The module PLT is cleaned using __flush_icache_range() as the trampoline
shouldn't be executable until we update the branch to it.

Drop the double-underscore so that this path runs kick_all_cpus_sync()
too.

Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Will Deacon <will@kernel.org>
2019-10-04 11:44:05 +01:00
..
boot pci-v5.4-changes 2019-09-23 19:16:01 -07:00
configs arm64: defconfig: Enable Qualcomm QUSB2 PHY 2019-09-04 17:15:29 +02:00
crypto crypto: arm64/aes-neonbs - implement ciphertext stealing for XTS 2019-09-09 17:35:39 +10:00
include arm64: Mark functions using explicit register variables as '__always_inline' 2019-10-04 11:15:42 +01:00
kernel arm64: ftrace: Ensure synchronisation in PLT setup for Neoverse-N1 #1542419 2019-10-04 11:44:05 +01:00
kvm * s390: ioctl hardening, selftests 2019-09-18 09:49:13 -07:00
lib Merge branch 'for-next/atomics' into for-next/core 2019-08-30 12:55:39 +01:00
mm arm64: mm: avoid virt_to_phys(init_mm.pgd) 2019-10-04 11:43:55 +01:00
net arm64: bpf: optimize modulo operation 2019-09-03 15:44:40 +02:00
xen treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Kbuild arm64: add arch/arm64/Kbuild 2019-08-21 18:47:15 +01:00
Kconfig Merge branch 'next-lockdown' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security 2019-09-28 08:14:15 -07:00
Kconfig.debug treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Kconfig.platforms arm64: exynos: Enable exynos-chipid driver 2019-09-04 22:43:26 +02:00
Makefile Kbuild updates for v5.4 2019-09-20 08:36:47 -07:00