This allows generic and sw_tags to be set in kernel cmdline too. Signed-off-by: Baoquan He --- include/linux/kasan-enabled.h | 2 ++ mm/kasan/common.c | 21 +++++++++++++++++++++ mm/kasan/hw_tags.c | 18 ------------------ 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/include/linux/kasan-enabled.h b/include/linux/kasan-enabled.h index 9eca967d8526..b7cb906825ca 100644 --- a/include/linux/kasan-enabled.h +++ b/include/linux/kasan-enabled.h @@ -35,6 +35,8 @@ static inline void kasan_enable(void) {} #endif /* CONFIG_ARCH_DEFER_KASAN || CONFIG_KASAN_HW_TAGS */ #ifdef CONFIG_KASAN_HW_TAGS +extern bool kasan_arg_disabled; + static inline bool kasan_hw_tags_enabled(void) { return kasan_enabled(); diff --git a/mm/kasan/common.c b/mm/kasan/common.c index b7d05c2a6d93..0d788a468e96 100644 --- a/mm/kasan/common.c +++ b/mm/kasan/common.c @@ -42,6 +42,27 @@ DEFINE_STATIC_KEY_FALSE(kasan_flag_enabled); EXPORT_SYMBOL_GPL(kasan_flag_enabled); #endif +#ifdef CONFIG_KASAN_HW_TAGS +bool kasan_arg_disabled __ro_after_init; + +/* kasan=off/on */ +static int __init early_kasan_flag(char *arg) +{ + if (!arg) + return -EINVAL; + + if (!strcmp(arg, "off")) + kasan_arg_disabled = true; + else if (!strcmp(arg, "on")) + kasan_arg_disabled = false; + else + return -EINVAL; + + return 0; +} +early_param("kasan", early_kasan_flag); +#endif + struct slab *kasan_addr_to_slab(const void *addr) { if (virt_addr_valid(addr)) diff --git a/mm/kasan/hw_tags.c b/mm/kasan/hw_tags.c index 26a69f0d822c..9602ea4861e2 100644 --- a/mm/kasan/hw_tags.c +++ b/mm/kasan/hw_tags.c @@ -35,7 +35,6 @@ enum kasan_arg_vmalloc { KASAN_ARG_VMALLOC_ON, }; -bool kasan_arg_disabled __ro_after_init; static enum kasan_arg_mode kasan_arg_mode __ro_after_init; static enum kasan_arg_vmalloc kasan_arg_vmalloc __initdata; @@ -75,23 +74,6 @@ unsigned int kasan_page_alloc_sample_order = PAGE_ALLOC_SAMPLE_ORDER_DEFAULT; DEFINE_PER_CPU(long, kasan_page_alloc_skip); -/* kasan=off/on */ -static int __init early_kasan_flag(char *arg) -{ - if (!arg) - return -EINVAL; - - if (!strcmp(arg, "off")) - kasan_arg_disabled = true; - else if (!strcmp(arg, "on")) - kasan_arg_disabled = false; - else - return -EINVAL; - - return 0; -} -early_param("kasan", early_kasan_flag); - /* kasan.mode=sync/async/asymm */ static int __init early_kasan_mode(char *arg) { -- 2.52.0