On 2025-02-06 at 00:45:01 +0100, Andrey Konovalov wrote: >On Tue, Feb 4, 2025 at 6:35 PM Maciej Wieczor-Retman ><maciej.wieczor-retman@xxxxxxxxx> wrote: >> >> In KASAN's tag-based mode (arm64) when a memory access occurs, the tag >> stored in the top 8 bits of the pointer is compared with tags saved in >> the region of the shadow memory that maps to memory the pointer points >> to. If any of the tags in the shadow memory region do not match the one >> stored in the pointer an error report is generated. >> >> With the introduction of the dense mode, tags won't necessarily occupy >> whole bytes of shadow memory if the previously allocated memory wasn't >> aligned to 32 bytes - which is the coverage of one shadow byte. >> >> Add an alternative implementation of kasan_check_range() that performs >> special checks on first and last bytes of shadow memory ranges if the >> originally allocated memory wasn't aligned to 32 bytes. >> >> Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@xxxxxxxxx> >> --- >> include/linux/kasan.h | 47 +++++++++++++++------- >> mm/kasan/Makefile | 3 ++ >> mm/kasan/dense.c | 83 +++++++++++++++++++++++++++++++++++++++ >> mm/kasan/kasan.h | 2 +- >> mm/kasan/report.c | 2 +- >> mm/kasan/report_sw_tags.c | 12 ++---- >> mm/kasan/sw_tags.c | 8 ++++ >> 7 files changed, 133 insertions(+), 24 deletions(-) >> create mode 100644 mm/kasan/dense.c >> >> diff --git a/include/linux/kasan.h b/include/linux/kasan.h >> index ea0f5acd875b..5a3e9bec21c2 100644 >> --- a/include/linux/kasan.h >> +++ b/include/linux/kasan.h >> @@ -33,6 +33,20 @@ typedef unsigned int __bitwise kasan_vmalloc_flags_t; >> >> #include <linux/pgtable.h> >> >> +#ifndef kasan_mem_to_shadow >> +static inline void *kasan_mem_to_shadow(const void *addr) >> +{ >> + void *scaled; >> + >> + if (IS_ENABLED(CONFIG_KASAN_GENERIC)) >> + scaled = (void *)((unsigned long)addr >> KASAN_SHADOW_SCALE_SHIFT); >> + else >> + scaled = (void *)((long)addr >> KASAN_SHADOW_SCALE_SHIFT); >> + >> + return KASAN_SHADOW_OFFSET + scaled; >> +} >> +#endif > >Any reason this is moved up here? I think it was necessary for something I added, removed and then didn't notice it's no longer needed. I'll move it back. -- Kind regards Maciej Wieczór-Retman