From: Greg Kroah-Hartman Date: Mon, 11 Apr 2022 13:36:12 +0000 (+0200) Subject: 5.15-stable patches X-Git-Tag: v4.9.310~33 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c601e387e445306ca2aece36d2c47595010a1ba8;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: ubsan-remove-config_ubsan_object_size.patch --- diff --git a/queue-5.15/series b/queue-5.15/series index adb719b0e82..c6092a08360 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -260,3 +260,4 @@ tools-build-use-shell-instead-of-to-get-embedded-libperl-s-ccopts.patch dmaengine-revert-dmaengine-shdma-fix-runtime-pm-imbalance-on-error.patch kvm-avoid-null-pointer-dereference-in-kvm_dirty_ring_push.patch revert-net-mlx5-accept-devlink-user-input-after-driver-initialization-complete.patch +ubsan-remove-config_ubsan_object_size.patch diff --git a/queue-5.15/ubsan-remove-config_ubsan_object_size.patch b/queue-5.15/ubsan-remove-config_ubsan_object_size.patch new file mode 100644 index 00000000000..f06c89a9c7a --- /dev/null +++ b/queue-5.15/ubsan-remove-config_ubsan_object_size.patch @@ -0,0 +1,120 @@ +From 69d0db01e210e07fe915e5da91b54a867cda040f Mon Sep 17 00:00:00 2001 +From: Kees Cook +Date: Wed, 19 Jan 2022 18:10:35 -0800 +Subject: ubsan: remove CONFIG_UBSAN_OBJECT_SIZE + +From: Kees Cook + +commit 69d0db01e210e07fe915e5da91b54a867cda040f upstream. + +The object-size sanitizer is redundant to -Warray-bounds, and +inappropriately performs its checks at run-time when all information +needed for the evaluation is available at compile-time, making it quite +difficult to use: + + https://bugzilla.kernel.org/show_bug.cgi?id=214861 + +With -Warray-bounds almost enabled globally, it doesn't make sense to +keep this around. + +Link: https://lkml.kernel.org/r/20211203235346.110809-1-keescook@chromium.org +Signed-off-by: Kees Cook +Reviewed-by: Marco Elver +Cc: Masahiro Yamada +Cc: Michal Marek +Cc: Nick Desaulniers +Cc: Nathan Chancellor +Cc: Andrey Ryabinin +Cc: "Peter Zijlstra (Intel)" +Cc: Stephen Rothwell +Cc: Arnd Bergmann +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Cc: Tadeusz Struk +Signed-off-by: Greg Kroah-Hartman +--- + lib/Kconfig.ubsan | 13 ------------- + lib/test_ubsan.c | 22 ---------------------- + scripts/Makefile.ubsan | 1 - + 3 files changed, 36 deletions(-) + +--- a/lib/Kconfig.ubsan ++++ b/lib/Kconfig.ubsan +@@ -112,19 +112,6 @@ config UBSAN_UNREACHABLE + This option enables -fsanitize=unreachable which checks for control + flow reaching an expected-to-be-unreachable position. + +-config UBSAN_OBJECT_SIZE +- bool "Perform checking for accesses beyond the end of objects" +- default UBSAN +- # gcc hugely expands stack usage with -fsanitize=object-size +- # https://lore.kernel.org/lkml/CAHk-=wjPasyJrDuwDnpHJS2TuQfExwe=px-SzLeN8GFMAQJPmQ@mail.gmail.com/ +- depends on !CC_IS_GCC +- depends on $(cc-option,-fsanitize=object-size) +- help +- This option enables -fsanitize=object-size which checks for accesses +- beyond the end of objects where the optimizer can determine both the +- object being operated on and its size, usually seen with bad downcasts, +- or access to struct members from NULL pointers. +- + config UBSAN_BOOL + bool "Perform checking for non-boolean values used as boolean" + default UBSAN +--- a/lib/test_ubsan.c ++++ b/lib/test_ubsan.c +@@ -79,15 +79,6 @@ static void test_ubsan_load_invalid_valu + eval2 = eval; + } + +-static void test_ubsan_null_ptr_deref(void) +-{ +- volatile int *ptr = NULL; +- int val; +- +- UBSAN_TEST(CONFIG_UBSAN_OBJECT_SIZE); +- val = *ptr; +-} +- + static void test_ubsan_misaligned_access(void) + { + volatile char arr[5] __aligned(4) = {1, 2, 3, 4, 5}; +@@ -98,29 +89,16 @@ static void test_ubsan_misaligned_access + *ptr = val; + } + +-static void test_ubsan_object_size_mismatch(void) +-{ +- /* "((aligned(8)))" helps this not into be misaligned for ptr-access. */ +- volatile int val __aligned(8) = 4; +- volatile long long *ptr, val2; +- +- UBSAN_TEST(CONFIG_UBSAN_OBJECT_SIZE); +- ptr = (long long *)&val; +- val2 = *ptr; +-} +- + static const test_ubsan_fp test_ubsan_array[] = { + test_ubsan_shift_out_of_bounds, + test_ubsan_out_of_bounds, + test_ubsan_load_invalid_value, + test_ubsan_misaligned_access, +- test_ubsan_object_size_mismatch, + }; + + /* Excluded because they Oops the module. */ + static const test_ubsan_fp skip_ubsan_array[] = { + test_ubsan_divrem_overflow, +- test_ubsan_null_ptr_deref, + }; + + static int __init test_ubsan_init(void) +--- a/scripts/Makefile.ubsan ++++ b/scripts/Makefile.ubsan +@@ -8,7 +8,6 @@ ubsan-cflags-$(CONFIG_UBSAN_LOCAL_BOUNDS + ubsan-cflags-$(CONFIG_UBSAN_SHIFT) += -fsanitize=shift + ubsan-cflags-$(CONFIG_UBSAN_DIV_ZERO) += -fsanitize=integer-divide-by-zero + ubsan-cflags-$(CONFIG_UBSAN_UNREACHABLE) += -fsanitize=unreachable +-ubsan-cflags-$(CONFIG_UBSAN_OBJECT_SIZE) += -fsanitize=object-size + ubsan-cflags-$(CONFIG_UBSAN_BOOL) += -fsanitize=bool + ubsan-cflags-$(CONFIG_UBSAN_ENUM) += -fsanitize=enum + ubsan-cflags-$(CONFIG_UBSAN_TRAP) += -fsanitize-undefined-trap-on-error