kasan: remove use after scope bugs detection.
Use after scope bugs detector seems to be almost entirely useless for the linux kernel. It exists over two years, but I've seen only one valid bug so far [1]. And the bug was fixed before it has been reported. There were some other use-after-scope reports, but they were false-positives due to different reasons like incompatibility with structleak plugin. This feature significantly increases stack usage, especially with GCC < 9 version, and causes a 32K stack overflow. It probably adds performance penalty too. Given all that, let's remove use-after-scope detector entirely. While preparing this patch I've noticed that we mistakenly enable use-after-scope detection for clang compiler regardless of CONFIG_KASAN_EXTRA setting. This is also fixed now. [1] http://lkml.kernel.org/r/<20171129052106.rhgbjhhis53hkgfn@wfg-t540p.sh.intel.com> Link: http://lkml.kernel.org/r/20190111185842.13978-1-aryabinin@virtuozzo.com Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com> Acked-by: Will Deacon <will.deacon@arm.com> [arm64] Cc: Qian Cai <cai@lca.pw> Cc: Alexander Potapenko <glider@google.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
46612b751c
commit
7771bdbbfd
@@ -222,7 +222,6 @@ config ENABLE_MUST_CHECK
|
||||
config FRAME_WARN
|
||||
int "Warn for stack frames larger than (needs gcc 4.4)"
|
||||
range 0 8192
|
||||
default 3072 if KASAN_EXTRA
|
||||
default 2048 if GCC_PLUGIN_LATENT_ENTROPY
|
||||
default 1280 if (!64BIT && PARISC)
|
||||
default 1024 if (!64BIT && !PARISC)
|
||||
|
||||
@@ -78,16 +78,6 @@ config KASAN_SW_TAGS
|
||||
|
||||
endchoice
|
||||
|
||||
config KASAN_EXTRA
|
||||
bool "KASAN: extra checks"
|
||||
depends on KASAN_GENERIC && DEBUG_KERNEL && !COMPILE_TEST
|
||||
help
|
||||
This enables further checks in generic KASAN, for now it only
|
||||
includes the address-use-after-scope check that can lead to
|
||||
excessive kernel stack usage, frame size warnings and longer
|
||||
compile time.
|
||||
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81715
|
||||
|
||||
choice
|
||||
prompt "Instrumentation type"
|
||||
depends on KASAN
|
||||
|
||||
@@ -480,29 +480,6 @@ static noinline void __init copy_user_test(void)
|
||||
kfree(kmem);
|
||||
}
|
||||
|
||||
static noinline void __init use_after_scope_test(void)
|
||||
{
|
||||
volatile char *volatile p;
|
||||
|
||||
pr_info("use-after-scope on int\n");
|
||||
{
|
||||
int local = 0;
|
||||
|
||||
p = (char *)&local;
|
||||
}
|
||||
p[0] = 1;
|
||||
p[3] = 1;
|
||||
|
||||
pr_info("use-after-scope on array\n");
|
||||
{
|
||||
char local[1024] = {0};
|
||||
|
||||
p = local;
|
||||
}
|
||||
p[0] = 1;
|
||||
p[1023] = 1;
|
||||
}
|
||||
|
||||
static noinline void __init kasan_alloca_oob_left(void)
|
||||
{
|
||||
volatile int i = 10;
|
||||
@@ -682,7 +659,6 @@ static int __init kmalloc_tests_init(void)
|
||||
kasan_alloca_oob_right();
|
||||
ksize_unpoisons_memory();
|
||||
copy_user_test();
|
||||
use_after_scope_test();
|
||||
kmem_cache_double_free();
|
||||
kmem_cache_invalid_free();
|
||||
kasan_memchr();
|
||||
|
||||
Reference in New Issue
Block a user