[PATCH v3 02/17] arm64: Prevent the use of is_kernel_in_hyp_mode() in hypervisor code

Shaoqin Huang shahuang at redhat.com
Tue Jun 13 01:25:13 PDT 2023



On 6/10/23 00:21, Marc Zyngier wrote:
> 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: Marc Zyngier <maz at kernel.org>
Reviewed-by: Shaoqin Huang <shahuang at redhat.com>
> ---
>   arch/arm64/include/asm/virt.h | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm64/include/asm/virt.h b/arch/arm64/include/asm/virt.h
> index 4eb601e7de50..21e94068804d 100644
> --- a/arch/arm64/include/asm/virt.h
> +++ b/arch/arm64/include/asm/virt.h
> @@ -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;
>   }
>   

-- 
Shaoqin




More information about the linux-arm-kernel mailing list