Commit dc1fd37a authored by Mostafa Saleh's avatar Mostafa Saleh Committed by Marc Zyngier
Browse files

arm64: Introduce esr_is_ubsan_brk()



Soon, KVM is going to use this logic for hypervisor panics,
so add it in a wrapper that can be used by the hypervisor exit
handler to decode hyp panics.

Signed-off-by: default avatarMostafa Saleh <smostafa@google.com>
Reviewed-by: default avatarKees Cook <kees@kernel.org>
Link: https://lore.kernel.org/r/20250430162713.1997569-2-smostafa@google.com


Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
parent 9c32cda4
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -440,6 +440,11 @@ static inline bool esr_is_cfi_brk(unsigned long esr)
	       (esr_brk_comment(esr) & ~CFI_BRK_IMM_MASK) == CFI_BRK_IMM_BASE;
}

static inline bool esr_is_ubsan_brk(unsigned long esr)
{
	return (esr_brk_comment(esr) & ~UBSAN_BRK_MASK) == UBSAN_BRK_IMM;
}

static inline bool esr_fsc_is_translation_fault(unsigned long esr)
{
	esr = esr & ESR_ELx_FSC;
+1 −1
Original line number Diff line number Diff line
@@ -1145,7 +1145,7 @@ int __init early_brk64(unsigned long addr, unsigned long esr,
		return kasan_handler(regs, esr) != DBG_HOOK_HANDLED;
#endif
#ifdef CONFIG_UBSAN_TRAP
	if ((esr_brk_comment(esr) & ~UBSAN_BRK_MASK) == UBSAN_BRK_IMM)
	if (esr_is_ubsan_brk(esr))
		return ubsan_handler(regs, esr) != DBG_HOOK_HANDLED;
#endif
	return bug_handler(regs, esr) != DBG_HOOK_HANDLED;