Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

kasan: Fix Software Tag-Based KASAN with GCC

Per [1], -fsanitize=kernel-hwaddress with GCC currently does not disable
instrumentation in functions with __attribute__((no_sanitize_address)).

However, __attribute__((no_sanitize("hwaddress"))) does correctly
disable instrumentation. Use it instead.

Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117196 [1]
Link: https://lore.kernel.org/r/000000000000f362e80620e27859@google.com
Link: https://lore.kernel.org/r/ZvFGwKfoC4yVjN_X@J2N7QTR9R3
Link: https://bugzilla.kernel.org/show_bug.cgi?id=218854
Reported-by: syzbot+908886656a02769af987@syzkaller.appspotmail.com
Tested-by: Andrey Konovalov <andreyknvl@gmail.com>
Cc: Andrew Pinski <pinskia@gmail.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Marco Elver <elver@google.com>
Reviewed-by: Andrey Konovalov <andreyknvl@gmail.com>
Fixes: 7b861a53e46b ("kasan: Bump required compiler version")
Link: https://lore.kernel.org/r/20241021120013.3209481-1-elver@google.com
Signed-off-by: Will Deacon <will@kernel.org>

authored by

Marco Elver and committed by
Will Deacon
894b00a3 7aed6a2c

+4
+4
include/linux/compiler-gcc.h
··· 80 80 #define __noscs __attribute__((__no_sanitize__("shadow-call-stack"))) 81 81 #endif 82 82 83 + #ifdef __SANITIZE_HWADDRESS__ 84 + #define __no_sanitize_address __attribute__((__no_sanitize__("hwaddress"))) 85 + #else 83 86 #define __no_sanitize_address __attribute__((__no_sanitize_address__)) 87 + #endif 84 88 85 89 #if defined(__SANITIZE_THREAD__) 86 90 #define __no_sanitize_thread __attribute__((__no_sanitize_thread__))