arm64: Support Clang UBSAN trap codes for better reporting
authorKees Cook <keescook@chromium.org>
Thu, 2 Feb 2023 22:07:49 +0000 (22:07 +0000)
committerKees Cook <keescook@chromium.org>
Wed, 8 Feb 2023 23:26:58 +0000 (15:26 -0800)
commit25b84002afb9dc9a91a7ea67166879c13ad82422
tree625353fde0768ab43c9b65bc5e294e89756d66fe
parent48df133578c70185a95a49390d42df1996ddba2a
arm64: Support Clang UBSAN trap codes for better reporting

When building with CONFIG_UBSAN_TRAP=y on arm64, Clang encodes the UBSAN
check (handler) type in the esr. Extract this and actually report these
traps as coming from the specific UBSAN check that tripped.

Before:

  Internal error: BRK handler: 00000000f20003e8 [#1] PREEMPT SMP

After:

  Internal error: UBSAN: shift out of bounds: 00000000f2005514 [#1] PREEMPT SMP

Acked-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Acked-by: Mukesh Ojha <quic_mojha@quicinc.com>
Reviewed-by: Fangrui Song <maskray@google.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: John Stultz <jstultz@google.com>
Cc: Yongqin Liu <yongqin.liu@linaro.org>
Cc: Sami Tolvanen <samitolvanen@google.com>
Cc: Yury Norov <yury.norov@gmail.com>
Cc: Andrey Konovalov <andreyknvl@gmail.com>
Cc: Marco Elver <elver@google.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: llvm@lists.linux.dev
Signed-off-by: Kees Cook <keescook@chromium.org>
arch/arm64/include/asm/brk-imm.h
arch/arm64/kernel/traps.c
include/linux/ubsan.h [new file with mode: 0644]
lib/Makefile
lib/ubsan.c
lib/ubsan.h