kasan, arm64: add arch_suppress_tag_checks_start/stop
authorAndrey Konovalov <andreyknvl@google.com>
Fri, 10 Mar 2023 23:43:32 +0000 (00:43 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 6 Apr 2023 02:42:43 +0000 (19:42 -0700)
Add two new tagging-related routines arch_suppress_tag_checks_start/stop
that suppress MTE tag checking via the TCO register.

These rouines are used in the next patch.

[andreyknvl@google.com: drop __ from mte_disable/enable_tco names]
Link: https://lkml.kernel.org/r/7ad5e5a9db79e3aba08d8f43aca24350b04080f6.1680114854.git.andreyknvl@google.com
Link: https://lkml.kernel.org/r/75a362551c3c54b70ae59a3492cabb51c105fa6b.1678491668.git.andreyknvl@google.com
Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Evgenii Stepanov <eugenis@google.com>
Cc: Marco Elver <elver@google.com>
Cc: Peter Collingbourne <pcc@google.com>
Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
Cc: Weizhao Ouyang <ouyangweizhao@zeku.com>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
arch/arm64/include/asm/memory.h
mm/kasan/kasan.h

index faf42bff9a60cc99e3c8b856fe0291829631ad95..05e42bd3555f3e893e47f71e8c410e4c8cd49ed9 100644 (file)
@@ -264,6 +264,8 @@ static inline const void *__tag_set(const void *addr, u8 tag)
 #define arch_enable_tag_checks_sync()          mte_enable_kernel_sync()
 #define arch_enable_tag_checks_async()         mte_enable_kernel_async()
 #define arch_enable_tag_checks_asymm()         mte_enable_kernel_asymm()
+#define arch_suppress_tag_checks_start()       mte_enable_tco()
+#define arch_suppress_tag_checks_stop()                mte_disable_tco()
 #define arch_force_async_tag_fault()           mte_check_tfsr_exit()
 #define arch_get_random_tag()                  mte_get_random_tag()
 #define arch_get_mem_tag(addr)                 mte_get_mem_tag(addr)
index a1613f5d7608cc1b64b36f02572187dd5056ae08..f5e4f5f2ba203706ee0f75ea712ff77e25ee15c1 100644 (file)
@@ -398,6 +398,8 @@ static inline const void *arch_kasan_set_tag(const void *addr, u8 tag)
 #define hw_enable_tag_checks_sync()            arch_enable_tag_checks_sync()
 #define hw_enable_tag_checks_async()           arch_enable_tag_checks_async()
 #define hw_enable_tag_checks_asymm()           arch_enable_tag_checks_asymm()
+#define hw_suppress_tag_checks_start()         arch_suppress_tag_checks_start()
+#define hw_suppress_tag_checks_stop()          arch_suppress_tag_checks_stop()
 #define hw_force_async_tag_fault()             arch_force_async_tag_fault()
 #define hw_get_random_tag()                    arch_get_random_tag()
 #define hw_get_mem_tag(addr)                   arch_get_mem_tag(addr)