On Tue, Aug 20, 2024 at 9:49 PM Matthew Maurer <mmaurer@xxxxxxxxxx> wrote: > > 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 v3 [3]: > * Probing macro comments made more accurate > * Probing macros now set --out-dir to avoid potential read-only fs > issues > * Reordered KHWASAN explicit disablement patch to come before KASAN > enablement > * Comment/ordering cleanup in KASAN makefile > * Ensured KASAN tests work with and without CONFIG_RUST enabled > > [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/20240819213534.4080408-1-mmaurer@xxxxxxxxxx/ > > Matthew Maurer (4): > kbuild: rust: Define probing macros for rustc > rust: kasan: Rust does not support KHWASAN > kbuild: rust: Enable KASAN support > kasan: rust: Add KASAN smoke test via UAF > > init/Kconfig | 1 + > mm/kasan/Makefile | 7 ++- > mm/kasan/kasan.h | 6 +++ > mm/kasan/{kasan_test.c => kasan_test_c.c} | 12 +++++ > mm/kasan/kasan_test_rust.rs | 19 ++++++++ > scripts/Kconfig.include | 8 ++++ > scripts/Makefile.compiler | 15 ++++++ > scripts/Makefile.kasan | 57 ++++++++++++++++------- > scripts/Makefile.lib | 3 ++ > scripts/generate_rust_target.rs | 1 + > 10 files changed, 112 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 > Left a couple of nit comments - feel free to ignore if you don't end up sending v5. Otherwise, for patches 2-4: Reviewed-by: Andrey Konovalov <andreyknvl@xxxxxxxxx>