]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
rust: kasan: add support for Software Tag-Based KASAN
authorAlice Ryhl <aliceryhl@google.com>
Wed, 8 Apr 2026 08:32:17 +0000 (08:32 +0000)
committerMiguel Ojeda <ojeda@kernel.org>
Tue, 26 May 2026 23:54:22 +0000 (01:54 +0200)
This adds support for Software Tag-Based KASAN (KASAN_SW_TAGS) when
CONFIG_RUST is enabled. This requires that rustc includes support for
the kernel-hwaddress sanitizer, which is available since 1.96.0 [1].

Unlike with clang, we need to pass -Zsanitizer-recover in addition to
-Zsanitizer because the option is not implied automatically.

The kasan makefile uses different names for the flags depending on
whether CC is clang or gcc, but as we require that CC is clang when
using KASAN, we do not need to try to handle mixed gcc/llvm builds when
Rust is enabled.

Link: https://github.com/rust-lang/rust/pull/153049
Reviewed-by: Danilo Krummrich <dakr@kernel.org>
Signed-off-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Gary Guo <gary@garyguo.net>
Link: https://patch.msgid.link/20260408-kasan-rust-sw-tags-v3-2-e07964d14363@google.com
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
init/Kconfig
scripts/Makefile.kasan

index 826a7d768ca368dcedfc32a8e7e5fc1a7693fefd..7ef3fa222ca329d2c0f6b8c6153636e278885f56 100644 (file)
@@ -2199,7 +2199,7 @@ config RUST
        depends on !CFI || HAVE_CFI_ICALL_NORMALIZE_INTEGERS_RUSTC
        select CFI_ICALL_NORMALIZE_INTEGERS if CFI
        depends on !KASAN || CC_IS_CLANG
-       depends on !KASAN_SW_TAGS
+       depends on !KASAN_SW_TAGS || RUSTC_VERSION >= 109600
        help
          Enables Rust support in the kernel.
 
index 0ba2aac3b8dc003a2832c1a7f30b262f292b93e2..91504e81247a9acdf00153e11e570fa18cc914ec 100644 (file)
@@ -71,8 +71,6 @@ ifdef CONFIG_KASAN_SW_TAGS
 
 CFLAGS_KASAN := -fsanitize=kernel-hwaddress
 
-# This sets flags that will enable SW_TAGS KASAN once enabled in Rust. These
-# will not work today, and is guarded against in dependencies for CONFIG_RUST.
 RUSTFLAGS_KASAN := -Zsanitizer=kernel-hwaddress \
                   -Zsanitizer-recover=kernel-hwaddress