Right now, if we turn on KASAN, Rust code will cause violations because it's not enabled properly. This series: 1. Adds flag probe macros for Rust - now that we're setting a minimum rustc version instead of an exact one, these could be useful in general. We need them in this patch because we don't set a restriction on which LLVM rustc is using, which is what KASAN actually cares about. 2. Makes `rustc` enable the relevant KASAN sanitizer flags when C does. 3. Adds a smoke test to the `kasan_test` KUnit suite to check basic integration. This patch series requires the target.json array support patch [1] as the x86_64 target.json file currently produced does not mark itself as KASAN capable, and is rebased on top of the KASAN Makefile rewrite [2]. Differences from v2 [3]: 1. Rebased on top of the maintainer's cleanup of the Makefile. 2. Cleaned up the UaF test based on feedback. 3. Calls out that KASAN_SW_TAGS is not yet supported in the config. The notable piece of feedback I have not followed is in the renaming of kasan_test.c to kasan_test_c.c - this was done in order to allow the module to be named kasan_test but consist of two .o files. The other options I see are renaming the test suite or creating a separate Rust test suite, but both of those seemed more invasive than the rename. Let me know if you have another approach you'd prefer there. [1] https://lore.kernel.org/lkml/20240730-target-json-arrays-v1-1-2b376fd0ecf4@xxxxxxxxxx/ [2] https://lore.kernel.org/all/20240813224027.84503-1-andrey.konovalov@xxxxxxxxx [3] https://lore.kernel.org/all/20240812232910.2026387-1-mmaurer@xxxxxxxxxx/ Matthew Maurer (4): kbuild: rust: Define probing macros for rustc kbuild: rust: Enable KASAN support rust: kasan: Rust does not support KHWASAN kasan: rust: Add KASAN smoke test via UAF init/Kconfig | 1 + mm/kasan/Makefile | 9 +++- mm/kasan/kasan.h | 1 + mm/kasan/{kasan_test.c => kasan_test_c.c} | 11 +++++ mm/kasan/kasan_test_rust.rs | 19 ++++++++ scripts/Kconfig.include | 8 ++++ scripts/Makefile.compiler | 15 +++++++ scripts/Makefile.kasan | 54 ++++++++++++++++------- scripts/Makefile.lib | 3 ++ scripts/generate_rust_target.rs | 1 + 10 files changed, 105 insertions(+), 17 deletions(-) rename mm/kasan/{kasan_test.c => kasan_test_c.c} (99%) create mode 100644 mm/kasan/kasan_test_rust.rs -- 2.46.0.184.g6999bdac58-goog