]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
arm64: Unconditionally select CONFIG_JUMP_LABEL
authorMarc Zyngier <maz@kernel.org>
Fri, 13 Jun 2025 14:19:36 +0000 (15:19 +0100)
committerWill Deacon <will@kernel.org>
Fri, 4 Jul 2025 13:47:51 +0000 (14:47 +0100)
Aneesh reports that his kernel fails to boot in nVHE mode with
KVM's protected mode enabled. Further investigation by Mostafa
reveals that this fails because CONFIG_JUMP_LABEL=n and that
we have static keys shared between EL1 and EL2.

While this can be worked around, it is obvious that we have long
relied on having CONFIG_JUMP_LABEL enabled at all times, as all
supported compilers now have 'asm goto' (which is the basic block
for jump labels).

Let's simplify our lives once and for all by mandating jump labels.
It's not like anyone else is testing anything without them, and
we already rely on them for other things (kfence, xfs, preempt).

Link: https://lore.kernel.org/r/yq5ah60pkq03.fsf@kernel.org
Reported-by: Aneesh Kumar K.V <aneesh.kumar@kernel.org>
Reported-by: Mostafa Saleh <smostafa@google.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Cc: Will Deacon <will@kernel.org>
Cc: Catalin marinas <catalin.marinas@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Ard Biesheuvel <ardb@kernel.org>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Link: https://lore.kernel.org/r/20250613141936.2219895-1-maz@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/Kconfig
arch/arm64/kernel/Makefile

index 55fc331af3371660ede7f83d43e1c4425dcf6b10..393d71124f5d29fb03540554f3ba718259028864 100644 (file)
@@ -256,6 +256,7 @@ config ARM64
        select HOTPLUG_SMT if HOTPLUG_CPU
        select IRQ_DOMAIN
        select IRQ_FORCED_THREADING
+       select JUMP_LABEL
        select KASAN_VMALLOC if KASAN
        select LOCK_MM_AND_FIND_VMA
        select MODULES_USE_ELF_RELA
index 2920b0a51403787562476e3c6abc9ab0a84248c0..a2faf0049dab1aa9878c2be21531a109ca5f51ee 100644 (file)
@@ -34,7 +34,7 @@ obj-y                 := debug-monitors.o entry.o irq.o fpsimd.o              \
                           cpufeature.o alternative.o cacheinfo.o               \
                           smp.o smp_spin_table.o topology.o smccc-call.o       \
                           syscall.o proton-pack.o idle.o patching.o pi/        \
-                          rsi.o
+                          rsi.o jump_label.o
 
 obj-$(CONFIG_COMPAT)                   += sys32.o signal32.o                   \
                                           sys_compat.o
@@ -47,7 +47,6 @@ obj-$(CONFIG_PERF_EVENTS)             += perf_regs.o perf_callchain.o
 obj-$(CONFIG_HARDLOCKUP_DETECTOR_PERF) += watchdog_hld.o
 obj-$(CONFIG_HAVE_HW_BREAKPOINT)       += hw_breakpoint.o
 obj-$(CONFIG_CPU_PM)                   += sleep.o suspend.o
-obj-$(CONFIG_JUMP_LABEL)               += jump_label.o
 obj-$(CONFIG_KGDB)                     += kgdb.o
 obj-$(CONFIG_EFI)                      += efi.o efi-rt-wrapper.o
 obj-$(CONFIG_PCI)                      += pci.o