Commit 35230be8 authored by Marc Zyngier's avatar Marc Zyngier Committed by Oliver Upton
Browse files

arm64: Prevent the use of is_kernel_in_hyp_mode() in hypervisor code



Using is_kernel_in_hyp_mode() in hypervisor code is a pretty bad
mistake. This helper only checks for CurrentEL being EL2, which
is always true.

Make the compilation fail if using the helper in hypervisor context
Whilst we're at it, flag the helper as __always_inline, which it
really should be.

Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Link: https://lore.kernel.org/r/20230609162200.2024064-3-maz@kernel.org


Signed-off-by: default avatarOliver Upton <oliver.upton@linux.dev>
parent c4b9fd2a
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -110,8 +110,10 @@ static inline bool is_hyp_mode_mismatched(void)
	return __boot_cpu_mode[0] != __boot_cpu_mode[1];
}

static inline bool is_kernel_in_hyp_mode(void)
static __always_inline bool is_kernel_in_hyp_mode(void)
{
	BUILD_BUG_ON(__is_defined(__KVM_NVHE_HYPERVISOR__) ||
		     __is_defined(__KVM_VHE_HYPERVISOR__));
	return read_sysreg(CurrentEL) == CurrentEL_EL2;
}