kasan: add kasan mode messages when kasan init
authorKuan-Ying Lee <Kuan-Ying.Lee@mediatek.com>
Thu, 11 Nov 2021 04:32:49 +0000 (20:32 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 11 Nov 2021 17:34:35 +0000 (09:34 -0800)
There are multiple kasan modes.  It makes sense that we add some
messages to know which kasan mode is active when booting up [1].

Link: https://bugzilla.kernel.org/show_bug.cgi?id=212195
Link: https://lkml.kernel.org/r/20211020094850.4113-1-Kuan-Ying.Lee@mediatek.com
Signed-off-by: Kuan-Ying Lee <Kuan-Ying.Lee@mediatek.com>
Reviewed-by: Marco Elver <elver@google.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Andrey Konovalov <andreyknvl@gmail.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Matthias Brugger <matthias.bgg@gmail.com>
Cc: Chinwen Chang <chinwen.chang@mediatek.com>
Cc: Yee Lee <yee.lee@mediatek.com>
Cc: Nicholas Tang <nicholas.tang@mediatek.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/arm64/mm/kasan_init.c
mm/kasan/hw_tags.c
mm/kasan/sw_tags.c

index ec276f7..c12cd70 100644 (file)
@@ -310,7 +310,7 @@ void __init kasan_init(void)
        kasan_init_depth();
 #if defined(CONFIG_KASAN_GENERIC)
        /* CONFIG_KASAN_SW_TAGS also requires kasan_init_sw_tags(). */
-       pr_info("KernelAddressSanitizer initialized\n");
+       pr_info("KernelAddressSanitizer initialized (generic)\n");
 #endif
 }
 
index dc89211..7355cb5 100644 (file)
@@ -106,6 +106,16 @@ static int __init early_kasan_flag_stacktrace(char *arg)
 }
 early_param("kasan.stacktrace", early_kasan_flag_stacktrace);
 
+static inline const char *kasan_mode_info(void)
+{
+       if (kasan_mode == KASAN_MODE_ASYNC)
+               return "async";
+       else if (kasan_mode == KASAN_MODE_ASYMM)
+               return "asymm";
+       else
+               return "sync";
+}
+
 /* kasan_init_hw_tags_cpu() is called for each CPU. */
 void kasan_init_hw_tags_cpu(void)
 {
@@ -177,7 +187,9 @@ void __init kasan_init_hw_tags(void)
                break;
        }
 
-       pr_info("KernelAddressSanitizer initialized\n");
+       pr_info("KernelAddressSanitizer initialized (hw-tags, mode=%s, stacktrace=%s)\n",
+               kasan_mode_info(),
+               kasan_stack_collection_enabled() ? "on" : "off");
 }
 
 void kasan_alloc_pages(struct page *page, unsigned int order, gfp_t flags)
index bd3f540..77f13f3 100644 (file)
@@ -42,7 +42,7 @@ void __init kasan_init_sw_tags(void)
        for_each_possible_cpu(cpu)
                per_cpu(prng_state, cpu) = (u32)get_cycles();
 
-       pr_info("KernelAddressSanitizer initialized\n");
+       pr_info("KernelAddressSanitizer initialized (sw-tags)\n");
 }
 
 /*