]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
arm64: Introduce esr_is_ubsan_brk()
authorMostafa Saleh <smostafa@google.com>
Wed, 30 Apr 2025 16:27:08 +0000 (16:27 +0000)
committerMarc Zyngier <maz@kernel.org>
Wed, 7 May 2025 10:21:35 +0000 (11:21 +0100)
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: Mostafa Saleh <smostafa@google.com>
Reviewed-by: Kees Cook <kees@kernel.org>
Link: https://lore.kernel.org/r/20250430162713.1997569-2-smostafa@google.com
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/include/asm/esr.h
arch/arm64/kernel/traps.c

index e4f77757937e65d6605ab61d49376c0d9e69808d..350f02bf437daefea19575402f04abf71149da63 100644 (file)
@@ -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;
index 529cff825531c8ac33e38907919b715c3bcbd8a5..224f927ac8afb7f94b4804433ad30728169c474c 100644 (file)
@@ -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;