Skip to content
Permalink
Browse files
KVM: arm64: Enable UBSan instrumentation in nVHE hyp code
Implement UBSan handlers inside nVHe hyp code, as empty functions for the
moment, so the undefined behaviours, that are triggered there, will be
linked to them, not to the ones defined in kernel-proper lib/ubsan.c.

In this way, enabling UBSAN_MISC won't cause a link error.

Change-Id: I4a468b33251fa099ddfc05a7cefa520cb8817994
Signed-off-by: Elena Petrova <lenaptr@google.com>
  • Loading branch information
George-Aurelian Popescu authored and intel-lab-lkp committed Jan 15, 2021
1 parent 694a1c0 commit 9eaabf22215aee1257362a608a15658c558d7fe5
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 1 deletion.
@@ -10,6 +10,8 @@ obj-y := timer-sr.o sysreg-sr.o debug-sr.o switch.o tlb.o hyp-init.o host.o \
hyp-main.o hyp-smp.o psci-relay.o
obj-y += ../vgic-v3-sr.o ../aarch32.o ../vgic-v2-cpuif-proxy.o ../entry.o \
../fpsimd.o ../hyp-entry.o ../exception.o
obj-$(CONFIG_UBSAN) += ubsan.o
CFLAGS_ubsan.nvhe.o += -I $(srctree)/lib/

##
## Build rules for compiling nVHE hyp code
@@ -61,7 +63,6 @@ KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_FTRACE) $(CC_FLAGS_SCS), $(KBUILD_CFLAG
# cause crashes. Just disable it.
GCOV_PROFILE := n
KASAN_SANITIZE := n
UBSAN_SANITIZE := n
KCOV_INSTRUMENT := n

# Skip objtool checking for this directory because nVHE code is compiled with
@@ -0,0 +1,30 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright 2020 Google LLC
* Author: George Popescu <georgepope@google.com>
*/
#include <linux/ctype.h>
#include <linux/types.h>
#include <ubsan.h>

void __ubsan_handle_add_overflow(void *_data, void *lhs, void *rhs) {}

void __ubsan_handle_sub_overflow(void *_data, void *lhs, void *rhs) {}

void __ubsan_handle_mul_overflow(void *_data, void *lhs, void *rhs) {}

void __ubsan_handle_negate_overflow(void *_data, void *old_val) {}

void __ubsan_handle_divrem_overflow(void *_data, void *lhs, void *rhs) {}

void __ubsan_handle_type_mismatch(struct type_mismatch_data *data, void *ptr) {}

void __ubsan_handle_type_mismatch_v1(void *_data, void *ptr) {}

void __ubsan_handle_out_of_bounds(void *_data, void *index) {}

void __ubsan_handle_shift_out_of_bounds(void *_data, void *lhs, void *rhs) {}

void __ubsan_handle_builtin_unreachable(void *_data) {}

void __ubsan_handle_load_invalid_value(void *_data, void *val) {}

0 comments on commit 9eaabf2

Please sign in to comment.