On Tue, Oct 22, 2024 at 3:59 AM Samuel Holland <samuel.holland@xxxxxxxxxx> wrote: > > This allows stack tagging to be disabled at runtime by tagging all > stack objects with the match-all tag. This is necessary on RISC-V, > where a kernel with KASAN_SW_TAGS enabled is expected to boot on > hardware without pointer masking support. > > Signed-off-by: Samuel Holland <samuel.holland@xxxxxxxxxx> > --- > > Changes in v2: > - Split the generic and RISC-V parts of stack tag generation control > to avoid breaking bisectability > > mm/kasan/kasan.h | 2 ++ > mm/kasan/sw_tags.c | 9 +++++++++ > 2 files changed, 11 insertions(+) > > diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h > index f438a6cdc964..72da5ddcceaa 100644 > --- a/mm/kasan/kasan.h > +++ b/mm/kasan/kasan.h > @@ -636,6 +636,8 @@ void *__asan_memset(void *addr, int c, ssize_t len); > void *__asan_memmove(void *dest, const void *src, ssize_t len); > void *__asan_memcpy(void *dest, const void *src, ssize_t len); > > +u8 __hwasan_generate_tag(void); > + > void __hwasan_load1_noabort(void *); > void __hwasan_store1_noabort(void *); > void __hwasan_load2_noabort(void *); > diff --git a/mm/kasan/sw_tags.c b/mm/kasan/sw_tags.c > index 220b5d4c6876..32435d33583a 100644 > --- a/mm/kasan/sw_tags.c > +++ b/mm/kasan/sw_tags.c > @@ -70,6 +70,15 @@ u8 kasan_random_tag(void) > return (u8)(state % (KASAN_TAG_MAX + 1)); > } > > +u8 __hwasan_generate_tag(void) > +{ > + if (!kasan_enabled()) > + return KASAN_TAG_KERNEL; > + > + return kasan_random_tag(); > +} > +EXPORT_SYMBOL(__hwasan_generate_tag); > + > bool kasan_check_range(const void *addr, size_t size, bool write, > unsigned long ret_ip) > { > -- > 2.45.1 > Reviewed-by: Andrey Konovalov <andreyknvl@xxxxxxxxx>