mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-03 19:55:31 +00:00
kasan: update required compiler versions in documentation
Updates the recently changed compiler requirements for KASAN. In particular, we require GCC >= 8.3.0, and add a note that Clang 11 supports OOB detection of globals. Fixes:7b861a53e4
("kasan: Bump required compiler version") Fixes:acf7b0bf7d
("kasan: Fix required compiler version") Signed-off-by: Marco Elver <elver@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Reviewed-by: Andrey Konovalov <andreyknvl@google.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Andrey Ryabinin <aryabinin@virtuozzo.com> Cc: Nick Desaulniers <ndesaulniers@google.com> Cc: Walter Wu <walter-zh.wu@mediatek.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Daniel Axtens <dja@axtens.net> Link: http://lkml.kernel.org/r/20200629104157.3242503-2-elver@google.com Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
7a3767f83f
commit
ac4766be5e
@ -13,11 +13,8 @@ KASAN uses compile-time instrumentation to insert validity checks before every
|
||||
memory access, and therefore requires a compiler version that supports that.
|
||||
|
||||
Generic KASAN is supported in both GCC and Clang. With GCC it requires version
|
||||
4.9.2 or later for basic support and version 5.0 or later for detection of
|
||||
out-of-bounds accesses for stack and global variables and for inline
|
||||
instrumentation mode (see the Usage section). With Clang it requires version
|
||||
7.0.0 or later and it doesn't support detection of out-of-bounds accesses for
|
||||
global variables yet.
|
||||
8.3.0 or later. With Clang it requires version 7.0.0 or later, but detection of
|
||||
out-of-bounds accesses for global variables is only supported since Clang 11.
|
||||
|
||||
Tag-based KASAN is only supported in Clang and requires version 7.0.0 or later.
|
||||
|
||||
|
@ -40,6 +40,7 @@ choice
|
||||
software tag-based KASAN (a version based on software memory
|
||||
tagging, arm64 only, similar to userspace HWASan, enabled with
|
||||
CONFIG_KASAN_SW_TAGS).
|
||||
|
||||
Both generic and tag-based KASAN are strictly debugging features.
|
||||
|
||||
config KASAN_GENERIC
|
||||
@ -51,16 +52,18 @@ config KASAN_GENERIC
|
||||
select STACKDEPOT
|
||||
help
|
||||
Enables generic KASAN mode.
|
||||
Supported in both GCC and Clang. With GCC it requires version 4.9.2
|
||||
or later for basic support and version 5.0 or later for detection of
|
||||
out-of-bounds accesses for stack and global variables and for inline
|
||||
instrumentation mode (CONFIG_KASAN_INLINE). With Clang it requires
|
||||
version 3.7.0 or later and it doesn't support detection of
|
||||
out-of-bounds accesses for global variables yet.
|
||||
|
||||
This mode is supported in both GCC and Clang. With GCC it requires
|
||||
version 8.3.0 or later. With Clang it requires version 7.0.0 or
|
||||
later, but detection of out-of-bounds accesses for global variables
|
||||
is supported only since Clang 11.
|
||||
|
||||
This mode consumes about 1/8th of available memory at kernel start
|
||||
and introduces an overhead of ~x1.5 for the rest of the allocations.
|
||||
The performance slowdown is ~x3.
|
||||
|
||||
For better error detection enable CONFIG_STACKTRACE.
|
||||
|
||||
Currently CONFIG_KASAN_GENERIC doesn't work with CONFIG_DEBUG_SLAB
|
||||
(the resulting kernel does not boot).
|
||||
|
||||
@ -73,15 +76,19 @@ config KASAN_SW_TAGS
|
||||
select STACKDEPOT
|
||||
help
|
||||
Enables software tag-based KASAN mode.
|
||||
|
||||
This mode requires Top Byte Ignore support by the CPU and therefore
|
||||
is only supported for arm64.
|
||||
This mode requires Clang version 7.0.0 or later.
|
||||
is only supported for arm64. This mode requires Clang version 7.0.0
|
||||
or later.
|
||||
|
||||
This mode consumes about 1/16th of available memory at kernel start
|
||||
and introduces an overhead of ~20% for the rest of the allocations.
|
||||
This mode may potentially introduce problems relating to pointer
|
||||
casting and comparison, as it embeds tags into the top byte of each
|
||||
pointer.
|
||||
|
||||
For better error detection enable CONFIG_STACKTRACE.
|
||||
|
||||
Currently CONFIG_KASAN_SW_TAGS doesn't work with CONFIG_DEBUG_SLAB
|
||||
(the resulting kernel does not boot).
|
||||
|
||||
@ -107,7 +114,6 @@ config KASAN_INLINE
|
||||
memory accesses. This is faster than outline (in some workloads
|
||||
it gives about x2 boost over outline instrumentation), but
|
||||
make kernel's .text size much bigger.
|
||||
For CONFIG_KASAN_GENERIC this requires GCC 5.0 or later.
|
||||
|
||||
endchoice
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user