From nobody Sun Oct 5 10:48:58 2025 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0A656279DA3; Tue, 5 Aug 2025 14:26:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754403995; cv=none; b=Rr+X0MtGvRLafjq95s+9ClYiOd8M6QMXjJRIBuvrXgrsikuqgDJRzEG8V4b09KEWaS+IrbUGN+U9Jy0Nlat+4w8CktW/aH+Uw2cLkBCBbl1RK4TDOqfzIbVD7hcBYzHZA3ET7ImEwc+HWb7Eny8UyMbeMQ0mZNOFamfTeFpiZhg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754403995; c=relaxed/simple; bh=fWQsDxgGDT36/25yEoPYxyc5a5IyXA28ioPz5WWSuIc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=D87Ikt6/G5sVC/Df4Lr2092vQf8zMmW0KZvM+sqZL5pKyIhem+97d2nZcZ5n0MhHuTj4jxBgsgsrV2UqWfybCK7fi1Ah7mmz5Q6pgkosqYg05X2pqdLpLc/yVku6xKXFRlTc1lPjsyT0mh3htq6BHLefh7JVwQXU+yAtmIVUO+Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=A+xx8pOo; arc=none smtp.client-ip=209.85.167.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="A+xx8pOo" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-55b8e6eb691so5020761e87.1; Tue, 05 Aug 2025 07:26:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754403991; x=1755008791; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=45SkqGXSprn3rZh3fzo6uRt8dTAwtmpvzDxxX6Brgt8=; b=A+xx8pOoSw1Tn0Kddk0SB2veex2U9MY4LKQvdwueFTbFKKxTa2TCI7+eykJIyGWboW bThkuZxOZqXhpv8hNmUIssYfZdl9IxjYrsZCRJSu+xG1rkgtFsjucM4fM8PMzQr9kHqK OcD7u2pGtQo2RO7RvGHGajPuBjRT+FTdB4LCX+2m4w4RbAxWqnPA/zKtKeyEzTNAs0t0 hl1W3bnWsLuyHVc5jt8807tYxddAEE7QDIP3hp7XErZ5+ic8td0yrX+4wtR8kFCXs9m0 5raNqaSxYsQq4pqu+8nP7nkq6LLTQY03TXsbyTqfPtkkRoxG3IFQrUMBTfcWZfTI48ff SIXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754403991; x=1755008791; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=45SkqGXSprn3rZh3fzo6uRt8dTAwtmpvzDxxX6Brgt8=; b=j5QoJF06QYoY5rrbL/KsuOLc8LPf1yEC2vwpfHT8GU8WqwcZaSeK4vF3IY32GjExkr GqDvHrss2n3L7p4SieiX8YHLXmoUkCy2wWaGeQuxmWrQGK7R7TmYzjqSh5T+igUwXm+X H7k9ac1DUTP1YsPkQ2YF7Woj+eaCg1F+NsMiQlH1pSrDrREMYlzEOvoTiagi/TUe2iUf jY+0JshFEqUSW7H8Exemnc7O5mmffM9fqFqFDXZbff0TDjkv0isI09icmIeL3sI/CAZR 42odmxAjPq3mnA/2M0KCi9ZeBRCT6jCHXgqit0JhzpfapTUbdAX7nawFh/mZmoxk77YB 9jzA== X-Forwarded-Encrypted: i=1; AJvYcCUud60k2PiJ8OKUeCFsjTPZQhgP5m7lHSqbKRgUxLM0XCbAYM8vQubYJSrSVCEBsmM/+KicDmoYbl9tcg==@vger.kernel.org, AJvYcCWUZkew5Fon9U+m6I7lNRj51o4rcadFznJgzh+J2lJ8Z+QQNza5KKSdioMEvQRnJO5ymx6yY+VMhd6Bt0A=@vger.kernel.org X-Gm-Message-State: AOJu0Yxl6eHf5rLREViKMqlTqXJreAZuyGt5YkKj3NMtn2xEdPsRPzgm aSSiBJzYmBF+gBiPpg6U354AUOIDb7MfD7qhdT6v3g6PRiw7BxGHtOHD X-Gm-Gg: ASbGnculYgzpCuUUI0lKd60T6Pkx2KQ/dRfjVOBO0Ypnuwxsa3DaCFYj+Z4a6rAIwXO SfkwJpEiZJLrCCz04Mzpj/pFtggau4x2orKskSZ3UaW+SLEDl5kUACsOFeKdWI7l0UzCVqRfqB9 X3ozwme6aXxVGRlnFIsY7rAiUZBXB9RNUo51ghEsuTDp4RAARFf5QMXas3dkDuUHD5CKKkF9bbg uByR45UoFAFB8hgdxAeFWBACrfpurW6vI/mvTuuF/f5xy40TQKs79jxYGmyX2jZXBgaYVKUPhHq oZonRtDJvLEiZzncPci4Y6PDwZSizOjMYiYMXfyABjmTVeSrN3lEhedYmmetqtNmwaoUcRz7Li0 2pRb3HYOmnafvhf4i0BIWKw9J0sOJJlRou3zDJPBsCeUiN6VExj6mgAjfOFhpuMtcCd4DUQ== X-Google-Smtp-Source: AGHT+IFIhvg/qdpvjgLPKAneDjkcPEsjQxny1M9S3dqWY6ZtkwE8RY1soF6geHJvLPSqQEF+jUI1OA== X-Received: by 2002:a05:6512:3053:b0:55b:858e:b602 with SMTP id 2adb3069b0e04-55b97b92fc6mr3295883e87.42.1754403990799; Tue, 05 Aug 2025 07:26:30 -0700 (PDT) Received: from localhost.localdomain (178.90.89.143.dynamic.telecom.kz. [178.90.89.143]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-55b889a290fsm1976379e87.54.2025.08.05.07.26.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 07:26:30 -0700 (PDT) From: Sabyrzhan Tasbolatov To: ryabinin.a.a@gmail.com, hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org, zhangqing@loongson.cn, chenhuacai@loongson.cn, trishalfonso@google.com, davidgow@google.com Cc: glider@google.com, dvyukov@google.com, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-um@lists.infradead.org, linux-mm@kvack.org, snovitoll@gmail.com Subject: [PATCH v4 1/9] kasan: introduce ARCH_DEFER_KASAN and unify static key across modes Date: Tue, 5 Aug 2025 19:26:14 +0500 Message-Id: <20250805142622.560992-2-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250805142622.560992-1-snovitoll@gmail.com> References: <20250805142622.560992-1-snovitoll@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Introduce CONFIG_ARCH_DEFER_KASAN to identify architectures that need to defer KASAN initialization until shadow memory is properly set up, and unify the static key infrastructure across all KASAN modes. Some architectures (like PowerPC with radix MMU) need to set up their shadow memory mappings before KASAN can be safely enabled, while others (like s390, x86, arm) can enable KASAN much earlier or even from the beginning. Historically, the runtime static key kasan_flag_enabled existed only for CONFIG_KASAN_HW_TAGS mode. Generic and SW_TAGS modes either relied on architecture-specific kasan_arch_is_ready() implementations or evaluated KASAN checks unconditionally, leading to code duplication. Closes: https://bugzilla.kernel.org/show_bug.cgi?id=3D217049 Signed-off-by: Sabyrzhan Tasbolatov --- Changes in v4: - Fixed HW_TAGS static key functionality (was broken in v3) - Merged configuration and implementation for atomicity --- include/linux/kasan-enabled.h | 36 +++++++++++++++++++++++------- include/linux/kasan.h | 42 +++++++++++++++++++++++++++-------- lib/Kconfig.kasan | 8 +++++++ mm/kasan/common.c | 18 ++++++++++----- mm/kasan/generic.c | 23 +++++++++++-------- mm/kasan/hw_tags.c | 9 +------- mm/kasan/kasan.h | 36 +++++++++++++++++++++--------- mm/kasan/shadow.c | 32 ++++++-------------------- mm/kasan/sw_tags.c | 4 +++- mm/kasan/tags.c | 2 +- 10 files changed, 133 insertions(+), 77 deletions(-) diff --git a/include/linux/kasan-enabled.h b/include/linux/kasan-enabled.h index 6f612d69ea0..52a3909f032 100644 --- a/include/linux/kasan-enabled.h +++ b/include/linux/kasan-enabled.h @@ -4,32 +4,52 @@ =20 #include =20 -#ifdef CONFIG_KASAN_HW_TAGS +/* Controls whether KASAN is enabled at all (compile-time check). */ +static __always_inline bool kasan_enabled(void) +{ + return IS_ENABLED(CONFIG_KASAN); +} =20 +#if defined(CONFIG_ARCH_DEFER_KASAN) || defined(CONFIG_KASAN_HW_TAGS) +/* + * Global runtime flag for KASAN modes that need runtime control. + * Used by ARCH_DEFER_KASAN architectures and HW_TAGS mode. + */ DECLARE_STATIC_KEY_FALSE(kasan_flag_enabled); =20 -static __always_inline bool kasan_enabled(void) +/* + * Runtime control for shadow memory initialization or HW_TAGS mode. + * Uses static key for architectures that need deferred KASAN or HW_TAGS. + */ +static __always_inline bool kasan_shadow_initialized(void) { return static_branch_likely(&kasan_flag_enabled); } =20 -static inline bool kasan_hw_tags_enabled(void) +static inline void kasan_enable(void) +{ + static_branch_enable(&kasan_flag_enabled); +} +#else +/* For architectures that can enable KASAN early, use compile-time check. = */ +static __always_inline bool kasan_shadow_initialized(void) { return kasan_enabled(); } =20 -#else /* CONFIG_KASAN_HW_TAGS */ +static inline void kasan_enable(void) {} +#endif /* CONFIG_ARCH_DEFER_KASAN || CONFIG_KASAN_HW_TAGS */ =20 -static inline bool kasan_enabled(void) +#ifdef CONFIG_KASAN_HW_TAGS +static inline bool kasan_hw_tags_enabled(void) { - return IS_ENABLED(CONFIG_KASAN); + return kasan_shadow_initialized(); } - +#else static inline bool kasan_hw_tags_enabled(void) { return false; } - #endif /* CONFIG_KASAN_HW_TAGS */ =20 #endif /* LINUX_KASAN_ENABLED_H */ diff --git a/include/linux/kasan.h b/include/linux/kasan.h index 890011071f2..5bf05aed795 100644 --- a/include/linux/kasan.h +++ b/include/linux/kasan.h @@ -194,7 +194,7 @@ bool __kasan_slab_pre_free(struct kmem_cache *s, void *= object, static __always_inline bool kasan_slab_pre_free(struct kmem_cache *s, void *object) { - if (kasan_enabled()) + if (kasan_shadow_initialized()) return __kasan_slab_pre_free(s, object, _RET_IP_); return false; } @@ -229,7 +229,7 @@ static __always_inline bool kasan_slab_free(struct kmem= _cache *s, void *object, bool init, bool still_accessible) { - if (kasan_enabled()) + if (kasan_shadow_initialized()) return __kasan_slab_free(s, object, init, still_accessible); return false; } @@ -237,7 +237,7 @@ static __always_inline bool kasan_slab_free(struct kmem= _cache *s, void __kasan_kfree_large(void *ptr, unsigned long ip); static __always_inline void kasan_kfree_large(void *ptr) { - if (kasan_enabled()) + if (kasan_shadow_initialized()) __kasan_kfree_large(ptr, _RET_IP_); } =20 @@ -302,7 +302,7 @@ bool __kasan_mempool_poison_pages(struct page *page, un= signed int order, static __always_inline bool kasan_mempool_poison_pages(struct page *page, unsigned int order) { - if (kasan_enabled()) + if (kasan_shadow_initialized()) return __kasan_mempool_poison_pages(page, order, _RET_IP_); return true; } @@ -356,7 +356,7 @@ bool __kasan_mempool_poison_object(void *ptr, unsigned = long ip); */ static __always_inline bool kasan_mempool_poison_object(void *ptr) { - if (kasan_enabled()) + if (kasan_shadow_initialized()) return __kasan_mempool_poison_object(ptr, _RET_IP_); return true; } @@ -543,6 +543,12 @@ void kasan_report_async(void); =20 #endif /* CONFIG_KASAN_HW_TAGS */ =20 +#ifdef CONFIG_KASAN_GENERIC +void __init kasan_init_generic(void); +#else +static inline void kasan_init_generic(void) { } +#endif + #ifdef CONFIG_KASAN_SW_TAGS void __init kasan_init_sw_tags(void); #else @@ -562,11 +568,29 @@ static inline void kasan_init_hw_tags(void) { } #if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS) =20 void kasan_populate_early_vm_area_shadow(void *start, unsigned long size); -int kasan_populate_vmalloc(unsigned long addr, unsigned long size); -void kasan_release_vmalloc(unsigned long start, unsigned long end, + +int __kasan_populate_vmalloc(unsigned long addr, unsigned long size); +static inline int kasan_populate_vmalloc(unsigned long addr, unsigned long= size) +{ + if (!kasan_shadow_initialized()) + return 0; + return __kasan_populate_vmalloc(addr, size); +} + +void __kasan_release_vmalloc(unsigned long start, unsigned long end, unsigned long free_region_start, unsigned long free_region_end, unsigned long flags); +static inline void kasan_release_vmalloc(unsigned long start, + unsigned long end, + unsigned long free_region_start, + unsigned long free_region_end, + unsigned long flags) +{ + if (kasan_shadow_initialized()) + __kasan_release_vmalloc(start, end, free_region_start, + free_region_end, flags); +} =20 #else /* CONFIG_KASAN_GENERIC || CONFIG_KASAN_SW_TAGS */ =20 @@ -592,7 +616,7 @@ static __always_inline void *kasan_unpoison_vmalloc(con= st void *start, unsigned long size, kasan_vmalloc_flags_t flags) { - if (kasan_enabled()) + if (kasan_shadow_initialized()) return __kasan_unpoison_vmalloc(start, size, flags); return (void *)start; } @@ -601,7 +625,7 @@ void __kasan_poison_vmalloc(const void *start, unsigned= long size); static __always_inline void kasan_poison_vmalloc(const void *start, unsigned long size) { - if (kasan_enabled()) + if (kasan_shadow_initialized()) __kasan_poison_vmalloc(start, size); } =20 diff --git a/lib/Kconfig.kasan b/lib/Kconfig.kasan index f82889a830f..38456560c85 100644 --- a/lib/Kconfig.kasan +++ b/lib/Kconfig.kasan @@ -19,6 +19,14 @@ config ARCH_DISABLE_KASAN_INLINE Disables both inline and stack instrumentation. Selected by architectures that do not support these instrumentation types. =20 +config ARCH_DEFER_KASAN + bool + help + Architectures should select this if they need to defer KASAN + initialization until shadow memory is properly set up. This + enables runtime control via static keys. Otherwise, KASAN uses + compile-time constants for better performance. + config CC_HAS_KASAN_GENERIC def_bool $(cc-option, -fsanitize=3Dkernel-address) =20 diff --git a/mm/kasan/common.c b/mm/kasan/common.c index ed4873e18c7..dff5f7bfad1 100644 --- a/mm/kasan/common.c +++ b/mm/kasan/common.c @@ -32,6 +32,15 @@ #include "kasan.h" #include "../slab.h" =20 +#if defined(CONFIG_ARCH_DEFER_KASAN) || defined(CONFIG_KASAN_HW_TAGS) +/* + * Definition of the unified static key declared in kasan-enabled.h. + * This provides consistent runtime enable/disable across KASAN modes. + */ +DEFINE_STATIC_KEY_FALSE(kasan_flag_enabled); +EXPORT_SYMBOL(kasan_flag_enabled); +#endif + struct slab *kasan_addr_to_slab(const void *addr) { if (virt_addr_valid(addr)) @@ -250,7 +259,7 @@ static inline void poison_slab_object(struct kmem_cache= *cache, void *object, bool __kasan_slab_pre_free(struct kmem_cache *cache, void *object, unsigned long ip) { - if (!kasan_arch_is_ready() || is_kfence_address(object)) + if (is_kfence_address(object)) return false; return check_slab_allocation(cache, object, ip); } @@ -258,7 +267,7 @@ bool __kasan_slab_pre_free(struct kmem_cache *cache, vo= id *object, bool __kasan_slab_free(struct kmem_cache *cache, void *object, bool init, bool still_accessible) { - if (!kasan_arch_is_ready() || is_kfence_address(object)) + if (is_kfence_address(object)) return false; =20 poison_slab_object(cache, object, init, still_accessible); @@ -282,9 +291,6 @@ bool __kasan_slab_free(struct kmem_cache *cache, void *= object, bool init, =20 static inline bool check_page_allocation(void *ptr, unsigned long ip) { - if (!kasan_arch_is_ready()) - return false; - if (ptr !=3D page_address(virt_to_head_page(ptr))) { kasan_report_invalid_free(ptr, ip, KASAN_REPORT_INVALID_FREE); return true; @@ -511,7 +517,7 @@ bool __kasan_mempool_poison_object(void *ptr, unsigned = long ip) return true; } =20 - if (is_kfence_address(ptr) || !kasan_arch_is_ready()) + if (is_kfence_address(ptr)) return true; =20 slab =3D folio_slab(folio); diff --git a/mm/kasan/generic.c b/mm/kasan/generic.c index d54e89f8c3e..1d20b925b9d 100644 --- a/mm/kasan/generic.c +++ b/mm/kasan/generic.c @@ -36,6 +36,17 @@ #include "kasan.h" #include "../slab.h" =20 +/* + * Initialize Generic KASAN and enable runtime checks. + * This should be called from arch kasan_init() once shadow memory is read= y. + */ +void __init kasan_init_generic(void) +{ + kasan_enable(); + + pr_info("KernelAddressSanitizer initialized (generic)\n"); +} + /* * All functions below always inlined so compiler could * perform better optimizations in each of __asan_loadX/__assn_storeX @@ -165,7 +176,7 @@ static __always_inline bool check_region_inline(const v= oid *addr, size_t size, bool write, unsigned long ret_ip) { - if (!kasan_arch_is_ready()) + if (!kasan_shadow_initialized()) return true; =20 if (unlikely(size =3D=3D 0)) @@ -189,13 +200,10 @@ bool kasan_check_range(const void *addr, size_t size,= bool write, return check_region_inline(addr, size, write, ret_ip); } =20 -bool kasan_byte_accessible(const void *addr) +bool __kasan_byte_accessible(const void *addr) { s8 shadow_byte; =20 - if (!kasan_arch_is_ready()) - return true; - shadow_byte =3D READ_ONCE(*(s8 *)kasan_mem_to_shadow(addr)); =20 return shadow_byte >=3D 0 && shadow_byte < KASAN_GRANULE_SIZE; @@ -495,9 +503,6 @@ static void release_alloc_meta(struct kasan_alloc_meta = *meta) =20 static void release_free_meta(const void *object, struct kasan_free_meta *= meta) { - if (!kasan_arch_is_ready()) - return; - /* Check if free meta is valid. */ if (*(u8 *)kasan_mem_to_shadow(object) !=3D KASAN_SLAB_FREE_META) return; @@ -562,7 +567,7 @@ void kasan_save_alloc_info(struct kmem_cache *cache, vo= id *object, gfp_t flags) kasan_save_track(&alloc_meta->alloc_track, flags); } =20 -void kasan_save_free_info(struct kmem_cache *cache, void *object) +void __kasan_save_free_info(struct kmem_cache *cache, void *object) { struct kasan_free_meta *free_meta; =20 diff --git a/mm/kasan/hw_tags.c b/mm/kasan/hw_tags.c index 9a6927394b5..c8289a3feab 100644 --- a/mm/kasan/hw_tags.c +++ b/mm/kasan/hw_tags.c @@ -45,13 +45,6 @@ static enum kasan_arg kasan_arg __ro_after_init; static enum kasan_arg_mode kasan_arg_mode __ro_after_init; static enum kasan_arg_vmalloc kasan_arg_vmalloc __initdata; =20 -/* - * Whether KASAN is enabled at all. - * The value remains false until KASAN is initialized by kasan_init_hw_tag= s(). - */ -DEFINE_STATIC_KEY_FALSE(kasan_flag_enabled); -EXPORT_SYMBOL(kasan_flag_enabled); - /* * Whether the selected mode is synchronous, asynchronous, or asymmetric. * Defaults to KASAN_MODE_SYNC. @@ -260,7 +253,7 @@ void __init kasan_init_hw_tags(void) kasan_init_tags(); =20 /* KASAN is now initialized, enable it. */ - static_branch_enable(&kasan_flag_enabled); + kasan_enable(); =20 pr_info("KernelAddressSanitizer initialized (hw-tags, mode=3D%s, vmalloc= =3D%s, stacktrace=3D%s)\n", kasan_mode_info(), diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h index 129178be5e6..2d67a99898e 100644 --- a/mm/kasan/kasan.h +++ b/mm/kasan/kasan.h @@ -398,7 +398,13 @@ depot_stack_handle_t kasan_save_stack(gfp_t flags, dep= ot_flags_t depot_flags); void kasan_set_track(struct kasan_track *track, depot_stack_handle_t stack= ); void kasan_save_track(struct kasan_track *track, gfp_t flags); void kasan_save_alloc_info(struct kmem_cache *cache, void *object, gfp_t f= lags); -void kasan_save_free_info(struct kmem_cache *cache, void *object); + +void __kasan_save_free_info(struct kmem_cache *cache, void *object); +static inline void kasan_save_free_info(struct kmem_cache *cache, void *ob= ject) +{ + if (kasan_shadow_initialized()) + __kasan_save_free_info(cache, object); +} =20 #ifdef CONFIG_KASAN_GENERIC bool kasan_quarantine_put(struct kmem_cache *cache, void *object); @@ -499,6 +505,7 @@ static inline bool kasan_byte_accessible(const void *ad= dr) =20 #else /* CONFIG_KASAN_HW_TAGS */ =20 +void __kasan_poison(const void *addr, size_t size, u8 value, bool init); /** * kasan_poison - mark the memory range as inaccessible * @addr: range start address, must be aligned to KASAN_GRANULE_SIZE @@ -506,7 +513,11 @@ static inline bool kasan_byte_accessible(const void *a= ddr) * @value: value that's written to metadata for the range * @init: whether to initialize the memory range (only for hardware tag-ba= sed) */ -void kasan_poison(const void *addr, size_t size, u8 value, bool init); +static inline void kasan_poison(const void *addr, size_t size, u8 value, b= ool init) +{ + if (kasan_shadow_initialized()) + __kasan_poison(addr, size, value, init); +} =20 /** * kasan_unpoison - mark the memory range as accessible @@ -521,12 +532,19 @@ void kasan_poison(const void *addr, size_t size, u8 v= alue, bool init); */ void kasan_unpoison(const void *addr, size_t size, bool init); =20 -bool kasan_byte_accessible(const void *addr); +bool __kasan_byte_accessible(const void *addr); +static inline bool kasan_byte_accessible(const void *addr) +{ + if (!kasan_shadow_initialized()) + return true; + return __kasan_byte_accessible(addr); +} =20 #endif /* CONFIG_KASAN_HW_TAGS */ =20 #ifdef CONFIG_KASAN_GENERIC =20 +void __kasan_poison_last_granule(const void *address, size_t size); /** * kasan_poison_last_granule - mark the last granule of the memory range as * inaccessible @@ -536,7 +554,11 @@ bool kasan_byte_accessible(const void *addr); * This function is only available for the generic mode, as it's the only = mode * that has partially poisoned memory granules. */ -void kasan_poison_last_granule(const void *address, size_t size); +static inline void kasan_poison_last_granule(const void *address, size_t s= ize) +{ + if (kasan_shadow_initialized()) + __kasan_poison_last_granule(address, size); +} =20 #else /* CONFIG_KASAN_GENERIC */ =20 @@ -544,12 +566,6 @@ static inline void kasan_poison_last_granule(const voi= d *address, size_t size) { =20 #endif /* CONFIG_KASAN_GENERIC */ =20 -#ifndef kasan_arch_is_ready -static inline bool kasan_arch_is_ready(void) { return true; } -#elif !defined(CONFIG_KASAN_GENERIC) || !defined(CONFIG_KASAN_OUTLINE) -#error kasan_arch_is_ready only works in KASAN generic outline mode! -#endif - #if IS_ENABLED(CONFIG_KASAN_KUNIT_TEST) =20 void kasan_kunit_test_suite_start(void); diff --git a/mm/kasan/shadow.c b/mm/kasan/shadow.c index d2c70cd2afb..90c508cad63 100644 --- a/mm/kasan/shadow.c +++ b/mm/kasan/shadow.c @@ -121,13 +121,10 @@ void *__hwasan_memcpy(void *dest, const void *src, ss= ize_t len) __alias(__asan_m EXPORT_SYMBOL(__hwasan_memcpy); #endif =20 -void kasan_poison(const void *addr, size_t size, u8 value, bool init) +void __kasan_poison(const void *addr, size_t size, u8 value, bool init) { void *shadow_start, *shadow_end; =20 - if (!kasan_arch_is_ready()) - return; - /* * Perform shadow offset calculation based on untagged address, as * some of the callers (e.g. kasan_poison_new_object) pass tagged @@ -145,14 +142,11 @@ void kasan_poison(const void *addr, size_t size, u8 v= alue, bool init) =20 __memset(shadow_start, value, shadow_end - shadow_start); } -EXPORT_SYMBOL_GPL(kasan_poison); +EXPORT_SYMBOL_GPL(__kasan_poison); =20 #ifdef CONFIG_KASAN_GENERIC -void kasan_poison_last_granule(const void *addr, size_t size) +void __kasan_poison_last_granule(const void *addr, size_t size) { - if (!kasan_arch_is_ready()) - return; - if (size & KASAN_GRANULE_MASK) { u8 *shadow =3D (u8 *)kasan_mem_to_shadow(addr + size); *shadow =3D size & KASAN_GRANULE_MASK; @@ -353,7 +347,7 @@ static int ___alloc_pages_bulk(struct page **pages, int= nr_pages) return 0; } =20 -static int __kasan_populate_vmalloc(unsigned long start, unsigned long end) +static int __kasan_populate_vmalloc_do(unsigned long start, unsigned long = end) { unsigned long nr_pages, nr_total =3D PFN_UP(end - start); struct vmalloc_populate_data data; @@ -385,14 +379,11 @@ static int __kasan_populate_vmalloc(unsigned long sta= rt, unsigned long end) return ret; } =20 -int kasan_populate_vmalloc(unsigned long addr, unsigned long size) +int __kasan_populate_vmalloc(unsigned long addr, unsigned long size) { unsigned long shadow_start, shadow_end; int ret; =20 - if (!kasan_arch_is_ready()) - return 0; - if (!is_vmalloc_or_module_addr((void *)addr)) return 0; =20 @@ -414,7 +405,7 @@ int kasan_populate_vmalloc(unsigned long addr, unsigned= long size) shadow_start =3D PAGE_ALIGN_DOWN(shadow_start); shadow_end =3D PAGE_ALIGN(shadow_end); =20 - ret =3D __kasan_populate_vmalloc(shadow_start, shadow_end); + ret =3D __kasan_populate_vmalloc_do(shadow_start, shadow_end); if (ret) return ret; =20 @@ -551,7 +542,7 @@ static int kasan_depopulate_vmalloc_pte(pte_t *ptep, un= signed long addr, * pages entirely covered by the free region, we will not run in to any * trouble - any simultaneous allocations will be for disjoint regions. */ -void kasan_release_vmalloc(unsigned long start, unsigned long end, +void __kasan_release_vmalloc(unsigned long start, unsigned long end, unsigned long free_region_start, unsigned long free_region_end, unsigned long flags) @@ -560,9 +551,6 @@ void kasan_release_vmalloc(unsigned long start, unsigne= d long end, unsigned long region_start, region_end; unsigned long size; =20 - if (!kasan_arch_is_ready()) - return; - region_start =3D ALIGN(start, KASAN_MEMORY_PER_SHADOW_PAGE); region_end =3D ALIGN_DOWN(end, KASAN_MEMORY_PER_SHADOW_PAGE); =20 @@ -611,9 +599,6 @@ void *__kasan_unpoison_vmalloc(const void *start, unsig= ned long size, * with setting memory tags, so the KASAN_VMALLOC_INIT flag is ignored. */ =20 - if (!kasan_arch_is_ready()) - return (void *)start; - if (!is_vmalloc_or_module_addr(start)) return (void *)start; =20 @@ -636,9 +621,6 @@ void *__kasan_unpoison_vmalloc(const void *start, unsig= ned long size, */ void __kasan_poison_vmalloc(const void *start, unsigned long size) { - if (!kasan_arch_is_ready()) - return; - if (!is_vmalloc_or_module_addr(start)) return; =20 diff --git a/mm/kasan/sw_tags.c b/mm/kasan/sw_tags.c index b9382b5b6a3..51a376940ea 100644 --- a/mm/kasan/sw_tags.c +++ b/mm/kasan/sw_tags.c @@ -45,6 +45,8 @@ void __init kasan_init_sw_tags(void) =20 kasan_init_tags(); =20 + kasan_enable(); + pr_info("KernelAddressSanitizer initialized (sw-tags, stacktrace=3D%s)\n", str_on_off(kasan_stack_collection_enabled())); } @@ -120,7 +122,7 @@ bool kasan_check_range(const void *addr, size_t size, b= ool write, return true; } =20 -bool kasan_byte_accessible(const void *addr) +bool __kasan_byte_accessible(const void *addr) { u8 tag =3D get_tag(addr); void *untagged_addr =3D kasan_reset_tag(addr); diff --git a/mm/kasan/tags.c b/mm/kasan/tags.c index d65d48b85f9..b9f31293622 100644 --- a/mm/kasan/tags.c +++ b/mm/kasan/tags.c @@ -142,7 +142,7 @@ void kasan_save_alloc_info(struct kmem_cache *cache, vo= id *object, gfp_t flags) save_stack_info(cache, object, flags, false); } =20 -void kasan_save_free_info(struct kmem_cache *cache, void *object) +void __kasan_save_free_info(struct kmem_cache *cache, void *object) { save_stack_info(cache, object, 0, true); } --=20 2.34.1 From nobody Sun Oct 5 10:48:58 2025 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 89989279DB2; Tue, 5 Aug 2025 14:26:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754403997; cv=none; b=kyuEyhfqUwDMUa7wBcMsNpLxSl8ZH9lGoqrm5POzKWLf1GdA4BOu7ApEax+kKobuciIFrJeZnL/BT0WM+UiMnUg1Rl3rq0i2tCWOtnm5rMvqjufqpoAeTeYNkK+VgxsX5K+EE5LXY52e5ZHDTIhqKX8HKH8MI/EIWr6sSgti+Rk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754403997; c=relaxed/simple; bh=3HeZTVECsuRRA+a4sR8Q4oo4v2MjazmlgBTz+bqQUAY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=A6nUUu8MiWWHvk4UmS4YlvYXltXWxAx6pAKLNo5JlkxmAWPhh5XMfX8vyiTiAcv6YT6htsg5KnGmLAmvt6nLzRDoL64LPnaH5aXU/JdWEf/VF8oCUBJOZM8sKoELCKeEt218grP7+EOyynlfm0EH9JR5iK9L+/fpxu7W6Y+gjBQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=km1pkYEb; arc=none smtp.client-ip=209.85.167.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="km1pkYEb" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-55b847a061dso6301784e87.1; Tue, 05 Aug 2025 07:26:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754403994; x=1755008794; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=44Cef9kvp87sJdDYN0I0T3XW3v08YaC6etU0qwyWC00=; b=km1pkYEbPblgG788xOt4jJwdm347HO/muJrcupmXPqGUVuqElqezcDZNOvyuW9w6vD pnDkZ0wXqkoSBG/Op4hVdxGqhMnnNnMXwLDTJXib3v4EwZR2XfvwiF1XkUN1QJLfqIjP 83WS77V6JGVpZqLY9nDp4io7tA+EYqbDT0CSuMPe0PPNx7lti2WK41s1W9SsENYbqiqB yRsPJWvi+i0QKVFvrI/q+wYVzlkhUyYsT9IpzmojjLLlxxx6WXZ02qmq+w1+9BCpM83h 44OwKIhNrGU/v/QBUk34KP7P1K43tBNX/N/EF9P/YF8AudAh3DcvfZ04RD7HCf06fsOB rK0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754403994; x=1755008794; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=44Cef9kvp87sJdDYN0I0T3XW3v08YaC6etU0qwyWC00=; b=mimn+n9eMTM40fvJNQ1TLU5di/rImJ+gX50i9Af/H5Mr7wPfkxXXdRD3a8UF8Ix2ZU CyafL2o0BfRqH3jSPMve6ABUbyxxZOgfgDBJtbzvitksrvI3D5SMpSjxHSbDItHe1FmK cXDKMg11Y2cxR+yKIkCbwX60pYLb82CC3jVWdjngkm0ZcaFjEE4scVGAu37vyfXrDmCm IccIFoYUDwbaqQl+puOIVJLIFpalpOUOhO4hlJ1VBd+M/O7zySysy3zKATKjlh12WiD+ es/1mHMmYySag7O3DpgB+aJO0Y6l1IMUF80YoFrop1OG+9n4+K2iedgTfyBUk4iwKwei zNXA== X-Forwarded-Encrypted: i=1; AJvYcCWKC0Ohpxb27rPfy11b9pshyZAtTio0LniU7LJPer5TfhBxi22c9UUNHfuwnrsiycUL3lCRNSUo3MN5dy8=@vger.kernel.org, AJvYcCXlK5NkXTP8nC3RBl+fo2oDyAz80oOaMzEkFy+GDTdIlSfh7LeAhfuDzHTTVQPJ16CXYWjucNA+9ZNLmA==@vger.kernel.org X-Gm-Message-State: AOJu0Yx9BLBvtxMkhokfzzpDEX6LkU+2NjnN7VxSo13KhPNIyz4sR/fG XRFNn3vlHachIyE0eNLA3SLgOUw5mi6OxlsZCiVVLbeInWgrrKWj0dV5TlDBCh2HQAs= X-Gm-Gg: ASbGncuIHSac7tspzp58N+zA+BRiiXbgd8ShhyDW1/jKgXNz9qn09raAzC8f9aw1AZ9 j9dXgzluJMBhzqzce95UWNdYNj4cLp1T34MjOMztWHHVuEU2OypESwQyl9zjxnYidw46wr4iaWS ERIrHLHEDbcdElqBeuFEjM9C9yDu1wKMJ6aLMD7HLYN3FXPJF8XNtuQJw0nMLqL0+zvOyUfJmnK CGfmr9O232UmC5KcB9vaPT/z9vMammAGk6MoGqSniQ88sIOTuefJLRikyAjkMJpKDTnuU7ox4wG J6iMqZxCF94qp2geeAI4EBXng/8zvq8Sefn66ZD0ifSBuHuwr57KAgQl4r72cHPCZDcidaZhHKP CTB3R17T3X9qXMdxDoLVU2A6kQYBXpNN3KkG0YXEyTpJtoBZmhH5l26mw4k5HX5wZmKzSXA== X-Google-Smtp-Source: AGHT+IG3IvKFDzWW1UJXkvwSM56EKK5Kb8nNkpLL/WnL+raFeiYW6aZ7Xti28XnaNJYqXW0SrOWKyA== X-Received: by 2002:a05:6512:4023:b0:55b:81de:3576 with SMTP id 2adb3069b0e04-55bab40c2d5mr1298432e87.24.1754403993514; Tue, 05 Aug 2025 07:26:33 -0700 (PDT) Received: from localhost.localdomain (178.90.89.143.dynamic.telecom.kz. [178.90.89.143]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-55b889a290fsm1976379e87.54.2025.08.05.07.26.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 07:26:33 -0700 (PDT) From: Sabyrzhan Tasbolatov To: ryabinin.a.a@gmail.com, hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org, zhangqing@loongson.cn, chenhuacai@loongson.cn, trishalfonso@google.com, davidgow@google.com Cc: glider@google.com, dvyukov@google.com, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-um@lists.infradead.org, linux-mm@kvack.org, snovitoll@gmail.com Subject: [PATCH v4 2/9] kasan/powerpc: select ARCH_DEFER_KASAN and call kasan_init_generic Date: Tue, 5 Aug 2025 19:26:15 +0500 Message-Id: <20250805142622.560992-3-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250805142622.560992-1-snovitoll@gmail.com> References: <20250805142622.560992-1-snovitoll@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" PowerPC with radix MMU is the primary architecture that needs deferred KASAN initialization, as it requires complex shadow memory setup before KASAN can be safely enabled. Select ARCH_DEFER_KASAN for PPC_RADIX_MMU to enable the static key mechanism for runtime KASAN control. Other PowerPC configurations (like book3e and 32-bit) can enable KASAN early and will use compile-time constants instead. Remove the PowerPC-specific static key and kasan_arch_is_ready() implementation in favor of the unified interface. Closes: https://bugzilla.kernel.org/show_bug.cgi?id=3D217049 Fixes: 55d77bae7342 ("kasan: fix Oops due to missing calls to kasan_arch_is= _ready()") Signed-off-by: Sabyrzhan Tasbolatov --- arch/powerpc/Kconfig | 1 + arch/powerpc/include/asm/kasan.h | 12 ------------ arch/powerpc/mm/kasan/init_32.c | 2 +- arch/powerpc/mm/kasan/init_book3e_64.c | 2 +- arch/powerpc/mm/kasan/init_book3s_64.c | 6 +----- 5 files changed, 4 insertions(+), 19 deletions(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 93402a1d9c9..11c8ef2d88e 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -122,6 +122,7 @@ config PPC # Please keep this list sorted alphabetically. # select ARCH_32BIT_OFF_T if PPC32 + select ARCH_DEFER_KASAN if PPC_RADIX_MMU select ARCH_DISABLE_KASAN_INLINE if PPC_RADIX_MMU select ARCH_DMA_DEFAULT_COHERENT if !NOT_COHERENT_CACHE select ARCH_ENABLE_MEMORY_HOTPLUG diff --git a/arch/powerpc/include/asm/kasan.h b/arch/powerpc/include/asm/ka= san.h index b5bbb94c51f..957a57c1db5 100644 --- a/arch/powerpc/include/asm/kasan.h +++ b/arch/powerpc/include/asm/kasan.h @@ -53,18 +53,6 @@ #endif =20 #ifdef CONFIG_KASAN -#ifdef CONFIG_PPC_BOOK3S_64 -DECLARE_STATIC_KEY_FALSE(powerpc_kasan_enabled_key); - -static __always_inline bool kasan_arch_is_ready(void) -{ - if (static_branch_likely(&powerpc_kasan_enabled_key)) - return true; - return false; -} - -#define kasan_arch_is_ready kasan_arch_is_ready -#endif =20 void kasan_early_init(void); void kasan_mmu_init(void); diff --git a/arch/powerpc/mm/kasan/init_32.c b/arch/powerpc/mm/kasan/init_3= 2.c index 03666d790a5..1d083597464 100644 --- a/arch/powerpc/mm/kasan/init_32.c +++ b/arch/powerpc/mm/kasan/init_32.c @@ -165,7 +165,7 @@ void __init kasan_init(void) =20 /* At this point kasan is fully initialized. Enable error messages */ init_task.kasan_depth =3D 0; - pr_info("KASAN init done\n"); + kasan_init_generic(); } =20 void __init kasan_late_init(void) diff --git a/arch/powerpc/mm/kasan/init_book3e_64.c b/arch/powerpc/mm/kasan= /init_book3e_64.c index 60c78aac0f6..0d3a73d6d4b 100644 --- a/arch/powerpc/mm/kasan/init_book3e_64.c +++ b/arch/powerpc/mm/kasan/init_book3e_64.c @@ -127,7 +127,7 @@ void __init kasan_init(void) =20 /* Enable error messages */ init_task.kasan_depth =3D 0; - pr_info("KASAN init done\n"); + kasan_init_generic(); } =20 void __init kasan_late_init(void) { } diff --git a/arch/powerpc/mm/kasan/init_book3s_64.c b/arch/powerpc/mm/kasan= /init_book3s_64.c index 7d959544c07..dcafa641804 100644 --- a/arch/powerpc/mm/kasan/init_book3s_64.c +++ b/arch/powerpc/mm/kasan/init_book3s_64.c @@ -19,8 +19,6 @@ #include #include =20 -DEFINE_STATIC_KEY_FALSE(powerpc_kasan_enabled_key); - static void __init kasan_init_phys_region(void *start, void *end) { unsigned long k_start, k_end, k_cur; @@ -92,11 +90,9 @@ void __init kasan_init(void) */ memset(kasan_early_shadow_page, 0, PAGE_SIZE); =20 - static_branch_inc(&powerpc_kasan_enabled_key); - /* Enable error messages */ init_task.kasan_depth =3D 0; - pr_info("KASAN init done\n"); + kasan_init_generic(); } =20 void __init kasan_early_init(void) { } --=20 2.34.1 From nobody Sun Oct 5 10:48:58 2025 Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CE662279DCE; Tue, 5 Aug 2025 14:26:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754403999; cv=none; b=mOnuGyaPLstjoIoVp2t8sBY6MmGIT958DnlG+GMCnWkCmTfyXmdVb9daYrmh40oXqpDLVVpGqM3Fyg1Zf0XwTBFUWPorNpeSTnKaDgFwL1xzyaiL/bcSGIeWezYrtYHVni3pnJtmd/ECpX4yjHP1Fp72ObtCMDShEi0C5RmfMR8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754403999; c=relaxed/simple; bh=YT0nUt8CdDH1RB0ycRej74uDxgOkaB3fmmbB8wGyJrM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=U6GOx6snXEteUqtwm+/Z9LynGBF1EWg02pinl4k2dEYL6eaAPWZVpcIP+ab+AdZvUyL2egTiqWcncoPzElrArKJx7PiLL++EiHh/xKFvXwYeUZqpfhkmROkvYewfRa4RCbFRQHFcgOMtgeeBkZ4zumo4aj1L05HmE4AZEnCFNJc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=kDmcSdaG; arc=none smtp.client-ip=209.85.167.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="kDmcSdaG" Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-55b8e6eb691so5020891e87.1; Tue, 05 Aug 2025 07:26:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754403996; x=1755008796; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vUUI2xKZlk5/jtNpSyx53EShjk/LU4/amvgKSzwK4wM=; b=kDmcSdaGR3+9xBN5JuUFdj7tlcS7p3Qm1HoD948d2Lw9BmD611LcdRnYuq40uQHuCr ZFCxc65qUm4L54T8r7aRCG9AbXYWqIuuuQXu5rStygIGObmTRXa7MIWcBgzc46VYSMWl 4ATE+QvdyUX1dywK4aNnVG62UdaRocBTvBCb2bojxL78YOHeAOE4A+F4FIWWDZI6amw/ dtwWENBBdPqnckimnR9FIqSA72jUBwTVM84HGmffRp6KDNiJP3h451kpsW7Y0RyGXV5Z PY6yyIhOARijSafHvdpAmPJ5rKoBIl+Y/U4RxzFR1eymAVQUCjMy01aD8RhK2A7moYKJ vPsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754403996; x=1755008796; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vUUI2xKZlk5/jtNpSyx53EShjk/LU4/amvgKSzwK4wM=; b=gMeELdS/xIpYPJyyG6+Jx0r+plPVLrpHhBw3DZ0w3hkm3C5xNznIbO5/JNSVNjWDq/ y33MiHyXp8FmvW4xhqRIDHhQIb4F8qqzh70y541Vq63kvAjrOH4L1i9JXl+8PsQFu7Y/ FECA5Tg1rQCZ5PcA5lRe7AT0uI1HuJsVDzfQF1vAlx3Dm6EDax0vBsRuKKwXxCASyQLM H+HXR/5sv0t61BMHxzBhAnaLnZHktHb+Pmjg0DVfeNQA7kK27NzbPDPNiYwErHGFJnl+ jSKEQmf1Azx+16UqtIX9qTRfvEmOpARwu14qTI7vr3OSRHar19oAlQ/ZPNa6a2vqmCkW gllg== X-Forwarded-Encrypted: i=1; AJvYcCX71DWtx7pRxbRth9R5tFFenjvroEUmcbiLrKyZa0hZzyWnGz0wPGMXVTvwzfM9dIMg/vBai4MYc7mvG10=@vger.kernel.org, AJvYcCXWJCLwDPuSHOICPbZ8NmmYZ3pShp+OlInyYCeZxjnSK45SD9FKEvXX0DYXJAWlqYnpeP9dUcDTKMYaaQ==@vger.kernel.org X-Gm-Message-State: AOJu0YyDMEIzKEhdwktJJOrnel5Xwv/XolvfpT8KuZGrq/K93Evdc3+E LprMiTUV3BWxjYYlU6EhE8sEZCDK3mkXn2VivDMB/6DMqksavZRb++ZE X-Gm-Gg: ASbGnctCFggTglBEyYe+xHETE6hRhDXuo1pCRYvpjve9esR95OxwydYlqN3ecpyOooP sN2PjiEjUUmu9Qr1+YODTMSjvRnyjPJnADSu728Lk4vVN/VEkSkut2SjGlr2XXiH0aDHraZiRmH 7cWPFncLZdzvj3d1DPeoFqyi3wHTLrVBzDIFHbUd0xK2J1L2rlScBwPtkkKIWombdoFER8q6oGI NIPT4oU7vVlvqystBH0JyPMA7xQmJdtTudSQqOfAvaliSDFF8lKYVm6TcaOGAMWIy10OXBOFinH ZFsBPwmIBVCaA0sb+nrX8GKZ88LG4DqG3tPKG4wumlNZhip+gWIck9qneb/CjI+buoL1INZjJMe TNLWfWwfa3dRpH/OttfmEoALFHyTuqtdRK4qzmdQenoOA+/MVCclj6BMK2PX57W+WgG7VsQ== X-Google-Smtp-Source: AGHT+IEuyOphkquEE1TcD7oJ1sEAoZRW6geJFjdlevxIlBKJ8sCVOgd5wEIObFEm35WGh0DuMN4+1Q== X-Received: by 2002:a05:6512:228a:b0:55c:ac98:edb6 with SMTP id 2adb3069b0e04-55cac98f040mr114526e87.12.1754403995715; Tue, 05 Aug 2025 07:26:35 -0700 (PDT) Received: from localhost.localdomain (178.90.89.143.dynamic.telecom.kz. [178.90.89.143]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-55b889a290fsm1976379e87.54.2025.08.05.07.26.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 07:26:35 -0700 (PDT) From: Sabyrzhan Tasbolatov To: ryabinin.a.a@gmail.com, hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org, zhangqing@loongson.cn, chenhuacai@loongson.cn, trishalfonso@google.com, davidgow@google.com Cc: glider@google.com, dvyukov@google.com, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-um@lists.infradead.org, linux-mm@kvack.org, snovitoll@gmail.com Subject: [PATCH v4 3/9] kasan/arm,arm64: call kasan_init_generic in kasan_init Date: Tue, 5 Aug 2025 19:26:16 +0500 Message-Id: <20250805142622.560992-4-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250805142622.560992-1-snovitoll@gmail.com> References: <20250805142622.560992-1-snovitoll@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Call kasan_init_generic() which handles Generic KASAN initialization. Since arm64 doesn't select ARCH_DEFER_KASAN, this will be a no-op for the runtime flag but will print the initialization banner. For SW_TAGS and HW_TAGS modes, their respective init functions will handle the flag enabling. Closes: https://bugzilla.kernel.org/show_bug.cgi?id=3D217049 Signed-off-by: Sabyrzhan Tasbolatov --- arch/arm/mm/kasan_init.c | 2 +- arch/arm64/mm/kasan_init.c | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/arch/arm/mm/kasan_init.c b/arch/arm/mm/kasan_init.c index 111d4f70313..c6625e808bf 100644 --- a/arch/arm/mm/kasan_init.c +++ b/arch/arm/mm/kasan_init.c @@ -300,6 +300,6 @@ void __init kasan_init(void) local_flush_tlb_all(); =20 memset(kasan_early_shadow_page, 0, PAGE_SIZE); - pr_info("Kernel address sanitizer initialized\n"); init_task.kasan_depth =3D 0; + kasan_init_generic(); } diff --git a/arch/arm64/mm/kasan_init.c b/arch/arm64/mm/kasan_init.c index d541ce45dae..abeb81bf6eb 100644 --- a/arch/arm64/mm/kasan_init.c +++ b/arch/arm64/mm/kasan_init.c @@ -399,14 +399,12 @@ void __init kasan_init(void) { kasan_init_shadow(); kasan_init_depth(); -#if defined(CONFIG_KASAN_GENERIC) + kasan_init_generic(); /* * Generic KASAN is now fully initialized. * Software and Hardware Tag-Based modes still require * kasan_init_sw_tags() and kasan_init_hw_tags() correspondingly. */ - pr_info("KernelAddressSanitizer initialized (generic)\n"); -#endif } =20 #endif /* CONFIG_KASAN_GENERIC || CONFIG_KASAN_SW_TAGS */ --=20 2.34.1 From nobody Sun Oct 5 10:48:58 2025 Received: from mail-lf1-f43.google.com (mail-lf1-f43.google.com [209.85.167.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9B22B27A455; Tue, 5 Aug 2025 14:26:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754404002; cv=none; b=YipKYIVxGeeqw27FvnUS9h/sSlzGludB82Mcw0Mb7vyfVvVtSSh38pum+omQgZQ/OkVakTB/IeJYLhfh2ZuX3P/Z3ai4mk1SpF06A5Un6v1vH0d6fqk7URkdEglRzkwbX4eY8V2aPpRa3MLeT78IzZt37X2qi/dNqkqpAlIqZEQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754404002; c=relaxed/simple; bh=dUvJbK84nrPOQrC8AFlAi1Pi4GwbCctj5hOdwNI27js=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Wv8Pm8ZuVpSKF3SwfMHuy7+Zb51RyPFtiGt4ncLFi53HAnkDcxRfG11bjKZ+UmKzyguGalMMDFBAasIFrMYjeXfYAcU1+z6OOK7715O0rLJphqU8QGJbCzktXiLvsV7E3Ik5ZW9xXeEpD9BSgxWeVq3w9bGPvnyCVvTdxn53bA4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ElA1QoS2; arc=none smtp.client-ip=209.85.167.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ElA1QoS2" Received: by mail-lf1-f43.google.com with SMTP id 2adb3069b0e04-55b975b459aso4176913e87.3; Tue, 05 Aug 2025 07:26:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754403999; x=1755008799; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fypRqRD7duJ7p6/XnMiehAY4t+I2qqoeS7XCKLtEaPI=; b=ElA1QoS2w+f+V/HU+2RlA4jEmFeOVUeDEG/+TGR/4UkQwdvqPIGBGYsPMHCWea68+b OR9jxSfp9mQZfPgIePuOk2WI8BsyUkQbKBybZUMpQ+w/MXmCwcunafRbBCgq+0bydaXM Q9a2XqkXpAcOZMgMEDMYBgx4InEgAW+J8HWtpGFGi+DjOAB7LXAAqT4tOQc3Qz0sjVmD bvTYCxrud38sF2axzqbrcsMcZkYHMCu6Vy64yHBKCvvo1gpUaGNoTMY0+tjWEYb/S/3U 2k2EAjxzBRiT7+LiGXkeCC6XfD/3ac4oI8u8NgZUsYSCtU5BHHs2t9GAFUy9jDyV2dTc rXiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754403999; x=1755008799; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fypRqRD7duJ7p6/XnMiehAY4t+I2qqoeS7XCKLtEaPI=; b=iPIgnaoPnbwRkbmnWvriFu6I7S9UHC1+L3hdZnxaM4bckF/8+zWNFIovuo9vzJQqmf US3ENn5lvt86KFuURpNJE4Mk9xiTydCK3w42fky2OOm90LG9DQEToNwNYNIg2/BsI35R Hs6782aXE5GjGcF3MSfQ1+rMew+j1Jo9TGOBJ0r+AL1bn9auh+EE892x/udq/F0O8yEv oFhgyZtWSuFLjC3sZ94TG8Kn3UCRvmb7pX6gsb03Mj+RJyrLSK1x8y0uFTYKz5pqMm6u ki6lCDiL5Jnr3CRo6n34Cqfe/dkBlll4yRePT/laHOHngazwQ2YoC3I+vFbz3FuvnNMI rzBg== X-Forwarded-Encrypted: i=1; AJvYcCU7i1cWHytCYr/hrJMaj3bi1MGxoUZb3JaukPBdJ1dgEOfymak3jIQTGm2iyJumd9CAr5Sl2v3M8+E6Kg==@vger.kernel.org, AJvYcCUyih6k+N3HH5fAbdQk9eSJ+nImuoWgYFL2FCab6B2NLdwZYWG+1am3mn9/5Ft7Q4qy613sBSpAuanqCUo=@vger.kernel.org X-Gm-Message-State: AOJu0YyStoVJEU6aPCTvIryDQhKKwwtJVu5LGJeYdcaDPt7vNv1vKIql Zs6dbMcb5Tg4yyR3QEIXm/WuzkFTmcUuGaJUPdGkfhaqinimJWREmvd6 X-Gm-Gg: ASbGncue4QE+ZOvREhyqmvxM03oMP/ESIr7fqxvLaDk3yl1FAIRpRVzuMgpI9gV0C5S 8qY7TKqPnC7Eazjr04gKQsjbtpggJDOfZ5oTN22FhFMwr97H8sEPqeyLsaJWzs8C+NMxxkk+05p d+qH92mu6QSb/53eP1nXpmnXoSXpDeSDeszFRxLe0Bg6F6eQeWxL6YPQsqY9e8pcp4Jvm6NmS/k cSn19xmzdCOt+TsCVyA5Tdq3ZJVO70UAK+kLh6FRm+QXoVQkvOHH8eDBY6RQf9aMd8goq/z/5vn CnyjgN4fQUvnoA5yxYVL47U1DvMgazvDa/B5oH4w9Gz5K9nEmvqeSzhS/YnMg7XJOojpGhStfLZ yR6o9pMZhKRjqLS3lPwUCM6WvH5jTALbBGetgl4LUUV+h/AVvlWg/q5yf4b0Q4nPO4BWqug== X-Google-Smtp-Source: AGHT+IE4tVfY0GDnGQOdh7BehbCQ960f1sYrnnyIro3xm6jwPaApab0fDljnNDBd9SZqMzry0nuyew== X-Received: by 2002:a05:6512:a8e:b0:55b:5b29:61ef with SMTP id 2adb3069b0e04-55b97b89544mr4329067e87.56.1754403997895; Tue, 05 Aug 2025 07:26:37 -0700 (PDT) Received: from localhost.localdomain (178.90.89.143.dynamic.telecom.kz. [178.90.89.143]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-55b889a290fsm1976379e87.54.2025.08.05.07.26.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 07:26:37 -0700 (PDT) From: Sabyrzhan Tasbolatov To: ryabinin.a.a@gmail.com, hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org, zhangqing@loongson.cn, chenhuacai@loongson.cn, trishalfonso@google.com, davidgow@google.com Cc: glider@google.com, dvyukov@google.com, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-um@lists.infradead.org, linux-mm@kvack.org, snovitoll@gmail.com Subject: [PATCH v4 4/9] kasan/xtensa: call kasan_init_generic in kasan_init Date: Tue, 5 Aug 2025 19:26:17 +0500 Message-Id: <20250805142622.560992-5-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250805142622.560992-1-snovitoll@gmail.com> References: <20250805142622.560992-1-snovitoll@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Call kasan_init_generic() which handles Generic KASAN initialization and prints the banner. Since xtensa doesn't select ARCH_DEFER_KASAN, kasan_enable() will be a no-op. Note that arch/xtensa still uses "current" instead of "init_task" pointer in `current->kasan_depth =3D 0;` to enable error messages. This is left unchanged as it cannot be tested. Closes: https://bugzilla.kernel.org/show_bug.cgi?id=3D217049 Signed-off-by: Sabyrzhan Tasbolatov --- arch/xtensa/mm/kasan_init.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/xtensa/mm/kasan_init.c b/arch/xtensa/mm/kasan_init.c index f39c4d83173..0524b9ed5e6 100644 --- a/arch/xtensa/mm/kasan_init.c +++ b/arch/xtensa/mm/kasan_init.c @@ -94,5 +94,5 @@ void __init kasan_init(void) =20 /* At this point kasan is fully initialized. Enable error messages. */ current->kasan_depth =3D 0; - pr_info("KernelAddressSanitizer initialized\n"); + kasan_init_generic(); } --=20 2.34.1 From nobody Sun Oct 5 10:48:58 2025 Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com [209.85.167.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5035627A47E; Tue, 5 Aug 2025 14:26:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754404004; cv=none; b=m8r8BKfJSRJ8iRBHUnTrtUw3m7/H4STst0w6vvSp9c9KaXBgbMQjDebfO+Qolh6LrbDQCLCGOulsXEDmI9zJs1L0RO+raJYacB99rhE5ZAlxTKwMVvzH7blcOdsUHnc1E+jGwRp+jOFgAte7qWJjvGXBsVmJkPxUjxl6bBi99pA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754404004; c=relaxed/simple; bh=7epp5zkqN4XDShph3ucilCsVpuCVnzjWU33NaR7AXbM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=H8Mfj4HCdXy7OHfn3QwBut5EIbadFbCSAkoVaJzj1LngPlwOG3/DZpNe1RgkooNcURGM7TaidtqxJ5fwtr2BOmRu0s+3K4antl8N+b1LU5ylF4j/JwLkGneMIQOrXZIHEiKt8tYmEnheUVTU59xQKBnuiSx2cZ5Lxn6IFy9PBfA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ZkETZsJN; arc=none smtp.client-ip=209.85.167.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZkETZsJN" Received: by mail-lf1-f44.google.com with SMTP id 2adb3069b0e04-55b827aba01so3852348e87.0; Tue, 05 Aug 2025 07:26:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754404000; x=1755008800; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DndoJEoEU+djai/jF18bii/cwZvYONRQ0C6xs3DhJyU=; b=ZkETZsJNq2TD6twfQnvTBHi8qv5isC9D1kAUj5jc4TKGyiOQmwz1pPyUxaz023x7wl olurgpvRMNQrw5tDRmnZt2cXivnEakVU2UBcb3EQq9LArQHhrlvBRTtpeLyDO07GemWf j8puVw0g59OppkqIs5a1qzcHCv4zO7d6Wr4lGsMzzaIfTtidkgOGzKkHkVj3J8eyMMlK BfhKGC1tiooLxk/SxmugJ+4Pa5XNU9eUJ1YDMTeXomHARzcVaPr/Ia4nmuw+P9TTFsSp RVETXZBzZuw01/icpB7UJctPO37rePy2lc+LcvtN75URps7eW4U+JoW2oK7ZA6ldaq5/ 1xhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754404000; x=1755008800; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DndoJEoEU+djai/jF18bii/cwZvYONRQ0C6xs3DhJyU=; b=LysKlHEgjY9g730W1KLvalq9lfoIQKvhjrkHab7DB5oMYRxcjtxbq0kBCoXely7cus FTQdqAEVtiX2pCl8B8td4ffQlHL+HCpJYOfVWJ642hRg1QeU36amhDkUW6kNlGhSI0bo 5cVfafFotu8l8/+Kve4QxyR29XMKYX7Dx1ljCZcebeUhMDJJrIt4fbrFKiFkQ6O0HBMY 75kM7ggQfdrQKFjxmT4c1KmTkF9zJxxoCYum3D+6nHaMPHvZmw95+H95EqFW3tpWPSTi ndHF/T8gb4fVl0oIqBcREY3zZGy5t0hgJzCAIO9XqsfZb3lpnsXtMapaCCyotplAVBmc GsmQ== X-Forwarded-Encrypted: i=1; AJvYcCUf0J3hucLoPUpRQQEqqok77mNkDuoAmkhNT8ONC9A9zOC0tMEt+8xk5bXUi+eTaxea5HE6QnXe/MJp+Bo=@vger.kernel.org, AJvYcCVbJ5VrgzhrR03U3DcAtLQRW4GQx+WALNNa6iQ9sr7SdkVMqVJAcSJn1CzgzJiPP5pLpwyHWlj8KGd9qA==@vger.kernel.org X-Gm-Message-State: AOJu0YxLhJBpFKTGKA8GxbNNgjWk6/JyxfM7bpKG6YJW/qwteL53fEDC HwUZCUWpz3rOvj00NWrZbFt4ULkWGSddEznL6+pzH0GJ09E58qY0NJhr X-Gm-Gg: ASbGncvg4HK6ux4yUjT2pov2aVj/2Lfpq2JCe9xlKMScxWJKUFGguvkR/+gZEW8blN2 qXdvulF8uZIJGiG6PnoE1w2VN5nYTaKjzbVcE8qrBYjAMjeOKcDhUg57/HjiSMbERg0sdlM+wL4 Jl5FNv+1MAGYhbaTM7mxmi58O5QcZxStU7oCywTRvy9RW+54N+serhSbvh44GVjgOCAG4un3dCa wr6zR87KpqF9fIajooTNksfrPNkWYTjYwOJcAuLqW/A+UCq6GlepuQsvpTpn18jlKLJQ2iosXaI +AtF8WbcELqyjOMLktNH3PAmDun6LwQPMfcnk499HshNnhmczJbDMwK7lCe+Ml9OOu9J3V5fhfN RGPk+mJa40o+3t4leo+xb3yFM/FkRDTcgJ3oPE15eATrgrPtoxqHwTpQheK3PhiKZdFSXAg== X-Google-Smtp-Source: AGHT+IG8YXFpsfEvWLWpJ0j6eFW8/n9npKWJxSkpHVdxT2hyDgxCfNXo+mPOdolEzpL3+MkF6IOdvw== X-Received: by 2002:a05:6512:1387:b0:553:25f4:695c with SMTP id 2adb3069b0e04-55b97bc54b1mr4200362e87.50.1754404000307; Tue, 05 Aug 2025 07:26:40 -0700 (PDT) Received: from localhost.localdomain (178.90.89.143.dynamic.telecom.kz. [178.90.89.143]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-55b889a290fsm1976379e87.54.2025.08.05.07.26.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 07:26:39 -0700 (PDT) From: Sabyrzhan Tasbolatov To: ryabinin.a.a@gmail.com, hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org, zhangqing@loongson.cn, chenhuacai@loongson.cn, trishalfonso@google.com, davidgow@google.com Cc: glider@google.com, dvyukov@google.com, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-um@lists.infradead.org, linux-mm@kvack.org, snovitoll@gmail.com Subject: [PATCH v4 5/9] kasan/loongarch: select ARCH_DEFER_KASAN and call kasan_init_generic Date: Tue, 5 Aug 2025 19:26:18 +0500 Message-Id: <20250805142622.560992-6-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250805142622.560992-1-snovitoll@gmail.com> References: <20250805142622.560992-1-snovitoll@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" LoongArch needs deferred KASAN initialization as it has a custom kasan_arch_is_ready() implementation that tracks shadow memory readiness via the kasan_early_stage flag. Select ARCH_DEFER_KASAN to enable the unified static key mechanism for runtime KASAN control. Call kasan_init_generic() which handles Generic KASAN initialization and enables the static key. Replace kasan_arch_is_ready() with kasan_enabled() and delete the flag kasan_early_stage in favor of the unified kasan_enabled() interface. Note that init_task.kasan_depth =3D 0 is called after kasan_init_generic(), which is different than in other arch kasan_init(). This is left unchanged as it cannot be tested. Closes: https://bugzilla.kernel.org/show_bug.cgi?id=3D217049 Signed-off-by: Sabyrzhan Tasbolatov --- Changes in v4: - Replaced !kasan_enabled() with !kasan_shadow_initialized() in loongarch which selects ARCH_DEFER_KASAN (Andrey Ryabinin) --- arch/loongarch/Kconfig | 1 + arch/loongarch/include/asm/kasan.h | 7 ------- arch/loongarch/mm/kasan_init.c | 8 ++------ 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig index f0abc38c40a..f6304c073ec 100644 --- a/arch/loongarch/Kconfig +++ b/arch/loongarch/Kconfig @@ -9,6 +9,7 @@ config LOONGARCH select ACPI_PPTT if ACPI select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI select ARCH_BINFMT_ELF_STATE + select ARCH_DEFER_KASAN select ARCH_DISABLE_KASAN_INLINE select ARCH_ENABLE_MEMORY_HOTPLUG select ARCH_ENABLE_MEMORY_HOTREMOVE diff --git a/arch/loongarch/include/asm/kasan.h b/arch/loongarch/include/as= m/kasan.h index 62f139a9c87..0e50e5b5e05 100644 --- a/arch/loongarch/include/asm/kasan.h +++ b/arch/loongarch/include/asm/kasan.h @@ -66,7 +66,6 @@ #define XKPRANGE_WC_SHADOW_OFFSET (KASAN_SHADOW_START + XKPRANGE_WC_KASAN_= OFFSET) #define XKVRANGE_VC_SHADOW_OFFSET (KASAN_SHADOW_START + XKVRANGE_VC_KASAN_= OFFSET) =20 -extern bool kasan_early_stage; extern unsigned char kasan_early_shadow_page[PAGE_SIZE]; =20 #define kasan_mem_to_shadow kasan_mem_to_shadow @@ -75,12 +74,6 @@ void *kasan_mem_to_shadow(const void *addr); #define kasan_shadow_to_mem kasan_shadow_to_mem const void *kasan_shadow_to_mem(const void *shadow_addr); =20 -#define kasan_arch_is_ready kasan_arch_is_ready -static __always_inline bool kasan_arch_is_ready(void) -{ - return !kasan_early_stage; -} - #define addr_has_metadata addr_has_metadata static __always_inline bool addr_has_metadata(const void *addr) { diff --git a/arch/loongarch/mm/kasan_init.c b/arch/loongarch/mm/kasan_init.c index d2681272d8f..57fb6e98376 100644 --- a/arch/loongarch/mm/kasan_init.c +++ b/arch/loongarch/mm/kasan_init.c @@ -40,11 +40,9 @@ static pgd_t kasan_pg_dir[PTRS_PER_PGD] __initdata __ali= gned(PAGE_SIZE); #define __pte_none(early, pte) (early ? pte_none(pte) : \ ((pte_val(pte) & _PFN_MASK) =3D=3D (unsigned long)__pa(kasan_early_shadow_= page))) =20 -bool kasan_early_stage =3D true; - void *kasan_mem_to_shadow(const void *addr) { - if (!kasan_arch_is_ready()) { + if (!kasan_shadow_initialized()) { return (void *)(kasan_early_shadow_page); } else { unsigned long maddr =3D (unsigned long)addr; @@ -298,8 +296,6 @@ void __init kasan_init(void) kasan_populate_early_shadow(kasan_mem_to_shadow((void *)VMALLOC_START), kasan_mem_to_shadow((void *)KFENCE_AREA_END)); =20 - kasan_early_stage =3D false; - /* Populate the linear mapping */ for_each_mem_range(i, &pa_start, &pa_end) { void *start =3D (void *)phys_to_virt(pa_start); @@ -329,5 +325,5 @@ void __init kasan_init(void) =20 /* At this point kasan is fully initialized. Enable error messages */ init_task.kasan_depth =3D 0; - pr_info("KernelAddressSanitizer initialized.\n"); + kasan_init_generic(); } --=20 2.34.1 From nobody Sun Oct 5 10:48:58 2025 Received: from mail-lf1-f43.google.com (mail-lf1-f43.google.com [209.85.167.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AE60727B4F7; Tue, 5 Aug 2025 14:26:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754404006; cv=none; b=CpaIbCwIto4EZEmWuLyJEi2MAbqj+kRd19fuuIKHZ3VLHuZqUSTV/Qv3o+DmoMdOM6+J92fxCs4wZckx+00vA1OUtgCX6H799qyla5r2z6l8+Qo89MuSSqz7QCodM3NJaUjTebZbnfQ0MuzIlwHljb+KOJA6DGUTV5d0pAhIvc8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754404006; c=relaxed/simple; bh=0+YxMXVG8MURIRmahEKn+nTfC5J8vQnslz9SF4x43H4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=faEELvYdBomi9sZlul6iwIakfHnj23XML6vl4mdgm5pN+tFb79Z/fDmWiBf7y3AIBBQHpy5/VHNHPOOk7+hZZjtA95uuw3kAq5Rglly65sZ4igXBfGSXkpqpH1SYY9u6Wx1SjeY4huv+4l1gVOeGkzmFlNUV1GOlfp58YWV2YnI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Y87AjhHy; arc=none smtp.client-ip=209.85.167.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Y87AjhHy" Received: by mail-lf1-f43.google.com with SMTP id 2adb3069b0e04-55b85413019so6016399e87.0; Tue, 05 Aug 2025 07:26:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754404003; x=1755008803; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Pl3xBvbmXoSLjMyBTIqb051cyNY5upcj2qfXScxGTG8=; b=Y87AjhHyUou+tJhv43AkRByseg23fFi3J3KHHq+vK2Ob4+SEpLPdi5vqLPtfZ1AtrD bfXg6+1cGmpe/SZ/XffLJwAgdOA0470rD4dEkedtXHqbfsRlmA48OqZli9XoXDKw/fmW SaYS2gaVhd35qK4VTkcoY7p0nDZZcxPTKXx8ViRcL7mTMuNYgSAaEIcuEMvjDCbeTqjD csJK1Vl/XKZqNkWWxgZOtn/PIuUPSYrwQJ2ui74kaxvN1rinFvxY92FZGlnvXeotW4l+ 30kTz0CNcrIB69T/55FfZghh1CPQPn7N/gENnsTabprlndcFy6DQ0pg2EFA/45SELJlb rCmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754404003; x=1755008803; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Pl3xBvbmXoSLjMyBTIqb051cyNY5upcj2qfXScxGTG8=; b=TLZEBdSGN1uSixXsTm860cQrDLRMfxDIBjlAlW1NjWXMPImUXJCJifiSKYjSO3s2m+ 54+JU8SOEeqxY+MeJr+FN9HnIerss1na8NtGiAiVYDjR6feeFe+qfBeIlngbS3LU/o8G sJNVZGbbG9ujiJ+WeZPlkgkAqs0mqa7fu6F0t063h/69gb6yCcvdkGhhdfB3v9109Sfy ZewwWsRkax611nAVAhxGNwpgVJboTHphVJ+segtkpdIjnE7Vq73hG6Rtka87u71eEGaC BCpN3w7xXy9G8hxHgomXeZEqSV9LmuIMn08o5lh9syE0g6mgTsesBPMDklmOe8UpY4mv AuTQ== X-Forwarded-Encrypted: i=1; AJvYcCVXseex/SLYgtUyg1QjMLIb6sjPhR/yFO45Xc7JtalYc4upFWvGg1Grih3kCPQmVzncw62zoin6Vutyj/w=@vger.kernel.org, AJvYcCXuGZxQ6Bt2zo1DRTddBOJ7DPDpFYb3CrvKgBAdWGubZOmCQSCHJ5garAZZnY9yQwneBdlSwtWW7R0oXw==@vger.kernel.org X-Gm-Message-State: AOJu0YwDPEYNUpg9zJe/FF5gOxt7YaP7Bn47HEEa7Mx1vKcG4XcajRCE EF3K7OcwifQw4P1g9GgMaP38pbZYIKxI9JfkTA8OBsNUm2wc7eX9Zoow X-Gm-Gg: ASbGncsu+HdOk8G5+uf9OPJLE+rJLNMa9ODp5U6WN2gQHQWfvEUmbSA1tHWtJi3dfnr dt7ss2A2ZTNhVqkMaQEKhgat+s9AT/pBLCOuM8j1pnFih2EFQZSh/IstvWOnwnsyWKjw4db8myR Tv5xwr2p2efSFa9KsMkesHyB3agNpSI+IhMRtJ44G/KoM0Bocr0g92ny/C1raTIAUindMUKc9Sd YkldkTW7rGxUcZUWGG76dkTjdzv45LU+dWBCYhUG1wfx2erWstP9NmF0+008oBPwyE/Slo9YN9M 1jeWV4yRhxaXYvsm+IkBeqkIJFA+/EvvMg4gS9bQR0PefFKVQqCveq57rIFCiEAtpnJpx1pgY96 NhB8IvDI6kACpR4G8FfdR5eTW4GyXESfouUtgM69tTNb5bzY4qfZ0Wjz8xvT9k2H0EpQ0Pg== X-Google-Smtp-Source: AGHT+IGVveeqR4Cp++JX2gYkKHclckYO0JnGR061NIJDmvQ7jhspWng2d4EVRtNzF0MnSLGE8X42Dw== X-Received: by 2002:a05:6512:ba8:b0:55b:8e3e:2be6 with SMTP id 2adb3069b0e04-55b97b2971dmr4253074e87.24.1754404002655; Tue, 05 Aug 2025 07:26:42 -0700 (PDT) Received: from localhost.localdomain (178.90.89.143.dynamic.telecom.kz. [178.90.89.143]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-55b889a290fsm1976379e87.54.2025.08.05.07.26.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 07:26:42 -0700 (PDT) From: Sabyrzhan Tasbolatov To: ryabinin.a.a@gmail.com, hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org, zhangqing@loongson.cn, chenhuacai@loongson.cn, trishalfonso@google.com, davidgow@google.com Cc: glider@google.com, dvyukov@google.com, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-um@lists.infradead.org, linux-mm@kvack.org, snovitoll@gmail.com Subject: [PATCH v4 6/9] kasan/um: select ARCH_DEFER_KASAN and call kasan_init_generic Date: Tue, 5 Aug 2025 19:26:19 +0500 Message-Id: <20250805142622.560992-7-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250805142622.560992-1-snovitoll@gmail.com> References: <20250805142622.560992-1-snovitoll@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" UserMode Linux needs deferred KASAN initialization as it has a custom kasan_arch_is_ready() implementation that tracks shadow memory readiness via the kasan_um_is_ready flag. As it's explained in commit 5b301409e8bc("UML: add support for KASAN under x86_64"), if CONFIG_STATIC_LINK=3Dy, then it works only with CONFIG_KASAN_OUTLINE instrumentation. Calling kasan_init_generic() in the end of kasan_init() like in other arch does not work for UML as kasan_init() is called way before main()->linux_main(). It produces the SEGFAULT in: kasan_init() kasan_init_generic kasan_enable static_key_enable STATIC_KEY_CHECK_USE ... movabs r9, kasan_flag_enabled movabs r8, __func__.2 movabs rcx, 0x60a04540 movabs rdi, 0x60a045a0 movabs r10, warn_slowpath_fmt WARN_ON_ONCE("static key '%pS' used before call to jump_label_init()") movabs r12, kasan_flag_enabled That's why we need to call kasan_init_generic() which enables the static flag after jump_label_init(). The earliest available place is arch_mm_preinit(). kasan_init() main() start_kernel setup_arch jump_label_init ... mm_core_init arch_mm_preinit kasan_init_generic() PowerPC, for example, has kasan_late_init() in arch_mm_preinit(). Though there is no static key enabling there, but it should be the best place to enable KASAN "fully". Verified with defconfig, enabling KASAN. Closes: https://bugzilla.kernel.org/show_bug.cgi?id=3D217049 Signed-off-by: Sabyrzhan Tasbolatov --- Changes in v4: - Addressed the issue in UML arch, where kasan_init_generic() is called before jump_label_init() (Andrey Ryabinin) --- arch/um/Kconfig | 1 + arch/um/include/asm/kasan.h | 5 ----- arch/um/kernel/mem.c | 12 +++++++++--- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/arch/um/Kconfig b/arch/um/Kconfig index 9083bfdb773..8d14c8fc2cd 100644 --- a/arch/um/Kconfig +++ b/arch/um/Kconfig @@ -5,6 +5,7 @@ menu "UML-specific options" config UML bool default y + select ARCH_DEFER_KASAN select ARCH_WANTS_DYNAMIC_TASK_STRUCT select ARCH_HAS_CACHE_LINE_SIZE select ARCH_HAS_CPU_FINALIZE_INIT diff --git a/arch/um/include/asm/kasan.h b/arch/um/include/asm/kasan.h index f97bb1f7b85..81bcdc0f962 100644 --- a/arch/um/include/asm/kasan.h +++ b/arch/um/include/asm/kasan.h @@ -24,11 +24,6 @@ =20 #ifdef CONFIG_KASAN void kasan_init(void); -extern int kasan_um_is_ready; - -#ifdef CONFIG_STATIC_LINK -#define kasan_arch_is_ready() (kasan_um_is_ready) -#endif #else static inline void kasan_init(void) { } #endif /* CONFIG_KASAN */ diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c index 76bec7de81b..704a26211ed 100644 --- a/arch/um/kernel/mem.c +++ b/arch/um/kernel/mem.c @@ -21,10 +21,10 @@ #include #include #include +#include =20 #ifdef CONFIG_KASAN -int kasan_um_is_ready; -void kasan_init(void) +void __init kasan_init(void) { /* * kasan_map_memory will map all of the required address space and @@ -32,7 +32,10 @@ void kasan_init(void) */ kasan_map_memory((void *)KASAN_SHADOW_START, KASAN_SHADOW_SIZE); init_task.kasan_depth =3D 0; - kasan_um_is_ready =3D true; + /* Since kasan_init() is called before main(), + * KASAN is initialized but the enablement is deferred after + * jump_label_init(). See arch_mm_preinit(). + */ } =20 static void (*kasan_init_ptr)(void) @@ -58,6 +61,9 @@ static unsigned long brk_end; =20 void __init arch_mm_preinit(void) { + /* Safe to call after jump_label_init(). Enables KASAN. */ + kasan_init_generic(); + /* clear the zero-page */ memset(empty_zero_page, 0, PAGE_SIZE); =20 --=20 2.34.1 From nobody Sun Oct 5 10:48:58 2025 Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com [209.85.167.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1EB3027C875; Tue, 5 Aug 2025 14:26:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754404008; cv=none; b=esqXcvVLOWRcJs3Egql8yx3awArefvwuVT2jK4MD8MCWwQoCTtBzdYIgUCQf8C1vQDPPTH1u5NEzM8kpUY25yMwJNNimgAjLHYZePpB8AaUBzNbFrEl0xY9jhrRjf2FpNMgUjj0ypuC3LhxVm1U3GZX+TvYcp3MuCYN2+1BTo+Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754404008; c=relaxed/simple; bh=Xk0SjVcNNZnQp2HkpSSqHyE9VWiAO/AKIvYCRFHkldY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=DkZRsnkNiS/bjPtInil4wGbDOG8D18blZQsRxsubLgyxduri/gYG/1Q1lViY+9xQzZu1GkYYCT/64UUFhRaxsaAlmSjBtwUtepOsAStF5t89CG2K6OazEUFh2OZ3CcD5wBwJm6cMgVFRFX9ZK7LTkwYFEbe+VPuVgaNXZvbv6Co= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=QzaiKv9f; arc=none smtp.client-ip=209.85.167.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QzaiKv9f" Received: by mail-lf1-f49.google.com with SMTP id 2adb3069b0e04-55b8b8e00caso5506168e87.3; Tue, 05 Aug 2025 07:26:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754404005; x=1755008805; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4lUgc2mQ1RFMODut/DxjH0e3nH7UxMqXiDg2xTFsSSw=; b=QzaiKv9fZ2mb9TCLImhQ87pLbcWYgGxS+AbljjVv5LAir1N39Oy7o2yWRrCSfpfldy 1v0VRhLTgCLwETLLr5PevEMu0Sw8RSbtmdE4avv65FXW9yhcZi0kqlGH+tebqF0pdrHt H51Xykiw43+Qwt38WskU75gGvt41yk7rjJV04xYFYTTM3oK2j0xCR7pObzMh4sXUr5Rd 9O36I7lJr+f/TBTwmMRmQl0UQUt94l4GJlrJjmrN9/4cofP54El+BI0l68VW8dQijr9r hkvouNNfgTHbriK6INfVaX9nYafJMUhTsAS90X49KehpMJYNokbCVCDQhk8JMZtN6FZS O2Zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754404005; x=1755008805; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4lUgc2mQ1RFMODut/DxjH0e3nH7UxMqXiDg2xTFsSSw=; b=Ibuq89OktNP2Vp1uYnPqUVaFBgEx+bMIDr20y8JmaZ2VfQK+zLwA65LGPXYNfPdNCa A3uiXHx9Zr7dQ2knACqJKrVWaCWyOlMfzJaFX9X2lRbe2P9mrab/YgBELYWFX1VPn0Su G5MK2sGW93CSGLxgfJ2P3nd+JeWH6In6BRtauyUjHEWjJre+hRXpas+jeX4r3XhDhsDn v12VCkylSGmg0nAZgDFM53B6JYS2lAWqhIxR/YuUbWItGc1and9+lxwusAiozJG+RiBy TgsObEf/Vyoxe9svgq4mtkJsCcsdjvmq8bf60qJYd6tzsA2VG7VStelzamoGwB8zOMus ovig== X-Forwarded-Encrypted: i=1; AJvYcCU4if002mmlvu7jjD0GcOXBBtVTPb11LpVlD0SJfU53icp7C+hxeS9+TNM7be4J4J1KRLEAuypw05e+FA==@vger.kernel.org, AJvYcCXC+gyLUI6CAnITRbOVgiyQkQBIncUuFvR+t/4bspOCsuHQtnCIMK8xgVhm0mr8B3Ert8eoCZaDNSjxgqo=@vger.kernel.org X-Gm-Message-State: AOJu0YwNzRQ2DVsjwOGGClrczJEKy6LWjoU5x2diWHYiA0buykH18aiA RYsfy2nDPbtifLiojij1fyUZRr3Ywc3pnt0ZMCdOZx2WeH1Y+We5AuIC X-Gm-Gg: ASbGnctgt72uBePKznrmuwOwH+vdvqH1FE7qu8+G6+9xfTdlA05CZ3p4fOdzvItoW3D RHc2jMYdlRy7Hvqxz2wSiyyljjihPnr7WjnihattTE8N7KPwvC9wSJKx1NQXer9OopBFwSw0ts0 ms96sotW7gVDrR/3FPPVQx0ARnqbcyRHy9E/E/hszAa58XWMRmVYwuaXESTOSuUEr5EqawkQyG6 MziDbBo9fgDXGpCg6zFRwmu44Wprd3SKFuPJG6QHNOall3X16Vr5j8qRmfjXIUMFln8qKq1pMWC Q/oQ9NBCU8oNby2YnN24lJzymcSpr8K6ePAk+JRlX/i2O2u3TqRK+0PQVNR3k7WW0F355IYfke/ RSoGrDbUNc+rnIWCBaIDGobhN9NrKVuOJ6O8zGHcM9S7+tZIKpgYwimer7VC86xBkDOVZ1OEx0D d+yQCx X-Google-Smtp-Source: AGHT+IEfdK6xUGSau1shbIGz1OserWC83V4+ELanbWHlOwkRpBjVR9Bm+3vZR0IX6iJXBqrfn1b6mA== X-Received: by 2002:a05:6512:3c97:b0:55b:8277:22a2 with SMTP id 2adb3069b0e04-55b97ac64ccmr3140519e87.21.1754404005154; Tue, 05 Aug 2025 07:26:45 -0700 (PDT) Received: from localhost.localdomain (178.90.89.143.dynamic.telecom.kz. [178.90.89.143]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-55b889a290fsm1976379e87.54.2025.08.05.07.26.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 07:26:44 -0700 (PDT) From: Sabyrzhan Tasbolatov To: ryabinin.a.a@gmail.com, hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org, zhangqing@loongson.cn, chenhuacai@loongson.cn, trishalfonso@google.com, davidgow@google.com Cc: glider@google.com, dvyukov@google.com, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-um@lists.infradead.org, linux-mm@kvack.org, snovitoll@gmail.com Subject: [PATCH v4 7/9] kasan/x86: call kasan_init_generic in kasan_init Date: Tue, 5 Aug 2025 19:26:20 +0500 Message-Id: <20250805142622.560992-8-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250805142622.560992-1-snovitoll@gmail.com> References: <20250805142622.560992-1-snovitoll@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Call kasan_init_generic() which handles Generic KASAN initialization and prints the banner. Since x86 doesn't select ARCH_DEFER_KASAN, kasan_enable() will be a no-op, and kasan_enabled() will return IS_ENABLED(CONFIG_KASAN) for optimal compile-time behavior. Closes: https://bugzilla.kernel.org/show_bug.cgi?id=3D217049 Signed-off-by: Sabyrzhan Tasbolatov --- arch/x86/mm/kasan_init_64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/mm/kasan_init_64.c b/arch/x86/mm/kasan_init_64.c index 0539efd0d21..998b6010d6d 100644 --- a/arch/x86/mm/kasan_init_64.c +++ b/arch/x86/mm/kasan_init_64.c @@ -451,5 +451,5 @@ void __init kasan_init(void) __flush_tlb_all(); =20 init_task.kasan_depth =3D 0; - pr_info("KernelAddressSanitizer initialized\n"); + kasan_init_generic(); } --=20 2.34.1 From nobody Sun Oct 5 10:48:58 2025 Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7522627E056; Tue, 5 Aug 2025 14:26:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754404011; cv=none; b=oPSNTvOhjaYlWYycjNtLHftsc+PjmyWTqBGjQRooCeE1HOBdSNakZLC83QbLAQ5KMXtKg9TeOiBUKeFYs9NNsDEJIzYnfKCBCgDZCR9dmloNX9Sfd8kPdUS0M8bHz5GRPnismu3Tfe8ZZ3DqVTYR2/uoZ/7I8qA7RV4p6nV2wjE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754404011; c=relaxed/simple; bh=HO6xp1CoFq+jAn2vTPWKpquTWdMBDrwRvZY+n8G972Q=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HGSUigm5sxjhZ1Zopi+Y33TdA2jR7U4e74fx3ngxPUoIZUcJY/G/73p3yzGc0D35dtTrLa9X/R1RgVSOO7cuxH44I5ukRDlvmpFhYWsDSKrbtoFUAQxnyWmp76I4cluQ3LZycpUfIPQFoKg8jnuv+ERd46lZQhwVR8EjM+SMJnQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=SYAhuHr8; arc=none smtp.client-ip=209.85.167.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="SYAhuHr8" Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-55b79ea50f8so5758441e87.0; Tue, 05 Aug 2025 07:26:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754404008; x=1755008808; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DdpO03g2oqaaq9F6m1+GGOlZl0qQTOQbdkE3YGqW9w0=; b=SYAhuHr8VUAV7c3zFVpwEmhYyBzGUj6fY2v/wB/q93LngaHJ+OoxYu7UBIt0Exkvw/ 5cdDIrUkbwFCFNNydncJOVhRwlsQ3rtkGaQeiU/So3KlcwxUyltHcz+oqbArlx5rAoHk f/1rHKOhJp5jrfNam9lKu1kmebksoNPet9MZCOMdyKJgMdUKcmETwc8mOhjFtc7ETt3r pDXBLrGR1vrCvBryj8jHxi3D6zw4KfWz7nERu8Xj7IesXriHPsAguQWsQgQMwDLRcCcv vcG2KGsbOZANiXMUEqrf0B63w1bK9RUJiN2uomZVTLv5XzgrRvoAw9oUBE5eNXMGWOWR wYaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754404008; x=1755008808; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DdpO03g2oqaaq9F6m1+GGOlZl0qQTOQbdkE3YGqW9w0=; b=aJQDFWivwFnWQNcJd15wrVaWmMJt0dXsWCZllTnYjoO/lhiFja3XhULb7EQMqyE9VM p9QwUdX6S6y9jmHLH+/SvSBMhau0UoR0cBo1WPVMgynmz6M8Tq5ZQ+SAxxHhkjHpbn/4 14Y1VnaWmEf6II8Outp9zG2bO0MLg1jCWkgyPMYzBt4Kmr0Sxkzzpu9ygTQZD+8e0KCu 2sPSAmNrY8zbLImsaaYfzyuew206tfoHKNV4v4CHfj1xVzx9mKvdCSpaoES6k3n6jqlf YFpPMPncdqG8aVodkf6Sy4IQePuyzPILygo/dQWYEG55/jPys+TIlJYsGR5C68y1Bwci 0kKw== X-Forwarded-Encrypted: i=1; AJvYcCWmpQOUsG1PAKAzbbJhwS4JM2gj5psnzGEPUFOLatogqzhT5AmPc7HsiqEocFVI6RA5ErvCiynd3+spu5s=@vger.kernel.org, AJvYcCWoWzWDB8FpuiUpPdoHcftE9uD0TfQbIstq3d9tBKS2r6JkqrjHt7tS54DjZnpXtG+duc0I/DjdAkQdIg==@vger.kernel.org X-Gm-Message-State: AOJu0YyCakQypsUdUZ8WyuwDd1QCCKafRZEls38Z/sQQ/azHrrpY1s5t Yoss6ASqdzenycQ+636Bcsn7fenYQGmp3JzaDXXBsdLKCNZ+IyrPsO/M X-Gm-Gg: ASbGnctdLOt3mopdZNj7bVbo4Bp5NeU4kojMYVo6j6KUd3lI+jTTaqVjx008YMJtPNl qBs0pLZVPFnLzxLevh9tpJwTF9igIF4GsF9jIHJVW044a6l5MD8LhcD9TQP7E9m7BHVUxMyRvhj fgbpGaqlWdUZoGMCteFGnqQLlYvm3gAOegllENYbhvlZhaQ8HRKNTaj6jyotVM9lyjPBL4rtCfl PqkYxPLT4bpWRVK74DFHFiM2fsFujKvVuDlTJEZgjJLPKgqSNTOPoYk435QuL8E33wa9xtUK70B 7rk63oySxzjLirJLRAlM8micafkJnc1rvYqf6fMtvpvCBxt70wx5Zl82vHzMiz/EMQ/I/8PSAKb PoyMgVhXSRvNSP4BcadzYvpZRjbJvSaT9T4hzcMJuU486dAQQz/2/Zx3KMP2OjuSFp7eO8w== X-Google-Smtp-Source: AGHT+IEVcUaDrsN/KncF3Ds7Ejr3CDmhOGcodfBsVHrYzHQORJKCgwrZQppnXPfaGPKlSAziWl9h7g== X-Received: by 2002:a05:6512:1254:b0:55b:842d:5825 with SMTP id 2adb3069b0e04-55b97b9395fmr4615455e87.43.1754404007496; Tue, 05 Aug 2025 07:26:47 -0700 (PDT) Received: from localhost.localdomain (178.90.89.143.dynamic.telecom.kz. [178.90.89.143]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-55b889a290fsm1976379e87.54.2025.08.05.07.26.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 07:26:46 -0700 (PDT) From: Sabyrzhan Tasbolatov To: ryabinin.a.a@gmail.com, hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org, zhangqing@loongson.cn, chenhuacai@loongson.cn, trishalfonso@google.com, davidgow@google.com Cc: glider@google.com, dvyukov@google.com, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-um@lists.infradead.org, linux-mm@kvack.org, snovitoll@gmail.com Subject: [PATCH v4 8/9] kasan/s390: call kasan_init_generic in kasan_init Date: Tue, 5 Aug 2025 19:26:21 +0500 Message-Id: <20250805142622.560992-9-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250805142622.560992-1-snovitoll@gmail.com> References: <20250805142622.560992-1-snovitoll@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Call kasan_init_generic() which handles Generic KASAN initialization and prints the banner. Since s390 doesn't select ARCH_DEFER_KASAN, kasan_enable() will be a no-op, and kasan_enabled() will return IS_ENABLED(CONFIG_KASAN) for optimal compile-time behavior. s390 sets up KASAN mappings in the decompressor and can run with KASAN enabled from very early, so it doesn't need runtime control. Closes: https://bugzilla.kernel.org/show_bug.cgi?id=3D217049 Signed-off-by: Sabyrzhan Tasbolatov --- arch/s390/kernel/early.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c index 9adfbdd377d..544e5403dd9 100644 --- a/arch/s390/kernel/early.c +++ b/arch/s390/kernel/early.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -65,7 +66,7 @@ static void __init kasan_early_init(void) { #ifdef CONFIG_KASAN init_task.kasan_depth =3D 0; - pr_info("KernelAddressSanitizer initialized\n"); + kasan_init_generic(); #endif } =20 --=20 2.34.1 From nobody Sun Oct 5 10:48:58 2025 Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C915B27E7DD; Tue, 5 Aug 2025 14:26:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754404013; cv=none; b=ckmHfuQjxh4cx+7AY/dUPmamxCAro5zjZhCiLxbN4VNBF6J5nKaisAzTM35eNfvtk/fxGz/mB4CPgdVZeKX4NWLCIj9KhEQHfYhW/Hh+eQd6bQz9p6X122zuO0p00+DTBGuA6gPHGwawET1CM8wdauWVRCVt+9uUhsNUWjhrrf8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754404013; c=relaxed/simple; bh=+oDLrDvMYdcW7Q2MYvDnPqqaPmQC/lb+cp7H6kYc8ws=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=DLCT7nBAK+LN2dfZHUCu7LWAr2K7s7P+vt2EuW+eRzr+HoAvTl7BW8EyrXgQmOYEFLO+1V6Ie5oQvYk6C9UObe0Yav0x2a57hrOiXcd6skfUzpQBBXV7UDVqJVZ7BjurYYninmRLhe57GqkSFy8CJzFd7ZQuNTbdYZw1gQr2Lg8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=bMnqbvWA; arc=none smtp.client-ip=209.85.167.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="bMnqbvWA" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-55b7e35a452so6931474e87.2; Tue, 05 Aug 2025 07:26:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754404010; x=1755008810; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=axtwyv1QW9Jl3sEVwduJUxW6lENRlEEn6jAlKX1Xswk=; b=bMnqbvWAo/I/f06myuWLnF6t6jjlfvGzxUgvMX5R/5uPJygMvhf+Ww36g9a0REqKsD wAuaflweSajVS/p/VVy0t43jsnFLKs4XhM6vCVbnSIE/LkmVNU3wcC44to//nmhjsswv nmz5SfxgxTO13Dc3AspV8hx7frEwJf8jn73w4Wr/alEdpD8N/Kzm7SI105GStBfV+gAK Iu82q1ufv+GcETFVaUQ2jIUragA4pdfjUPO4TmzCvXv6PrRGY1I4adiumVEDVk5IBI3W s4Jod4p6vq8hAk7sbTOAZ7w5Jsgy9g5eImyO4fEh8kd8r4ZtBCofZxyISX3b8ScVvZvE LgJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754404010; x=1755008810; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=axtwyv1QW9Jl3sEVwduJUxW6lENRlEEn6jAlKX1Xswk=; b=BW7bRTj4pRT7QZtoW9xyHrFQ9jA0hn8HpgazQJMhgUEfuUFdlMPFtduIyxz6hbO1qR RgO50JxDq2VozYo+5j3Ih3+vvJlj17y/pmlHpTH4hmTg8N/GR5424VHz0iWZQfYYOGdM bVRYlcU0koKdc60msCjFIE7sSk0R07FZYU77pKcUkjSqM6UwLD1UobTYkJZxp2TM516u 8ezBkXGpWr9Rw/JlzrlC079+19PD6N41jB+2GlKDiE8R3PK5aIDJSYEvMG2nUF5AJiOK P9q9djzzO/qTZdkTmdVjTKOFckggPmQ1xDW9LHriz9Gf/BzF2Gat2uZy7ONSbFBLuVEB s9iA== X-Forwarded-Encrypted: i=1; AJvYcCU8f0L7A+VMzTDI1yNgAWBXebRfEA/b9SrC/8dSFePy0hUE7pb7wDUkFr8mo+SyK8D8vlcZMTT7abzRTg==@vger.kernel.org, AJvYcCUcYe87fT+O+Tw3QW2JMQMFTE8fAdy6LNhKGNyBzlVO/TR1RwAZXAhp9Xw7rt2eH0nMf1w+h+XGuwfZT8I=@vger.kernel.org X-Gm-Message-State: AOJu0YxXpXHGqrEDOd9ASSnK1PN9rl0lIZ4wvnOSQJWHKOqdoR/pWZey PqgLVOTqkXdotcABnfOrxD2Q9u6IVnSPXAGUkvUJUwpD43ClkXybUHg/ X-Gm-Gg: ASbGnctaM2anWLiL26J6T9AHGpj8bzfKxNxNEa9qdVyXQ8kMEG1rYVL0iVrIw/8ZkRQ VAx/fpJx4uOPE9V0jfFp6ZbF1Umt+pmVpjfizxFB89prIwbracyNs4bJB4JCWLk3mZ+vkJkOVqM zX1txgjKqFgZjcQVxh939ZZ2Z0ZKy/Oa9kp007f9f1drdp5VsMoZKsPbGOM5o4lVGM2PPlRvPkd zelJ3xiItl1StYVBQYl55usew64RQDPh7N2UhNK1WUXCcQREkt08LDCSr3UY6Rf8oSmPkuj2jNf WxigtdY+Z6X6/JaUlzAQTaZP9Kl4oYZt6/5wV+Z45JNvPG6eRPx59p88FQNsqfwCW92NcGDCds1 eJ3zHsPIaHMW6XN7zRuolADPQWK1xV0X7kRulXtM8jrvUsnsErbl+OoODHboNZPNBx9sdRQ== X-Google-Smtp-Source: AGHT+IEuo6xaqIABZcTJ/AY4HFbxdZ3CAT0b3T807lmpaRovzDFMVVkpiUz/KiBR8yrsIvUCLLc9/A== X-Received: by 2002:a05:6512:3e1d:b0:558:f694:a65e with SMTP id 2adb3069b0e04-55b97b41812mr3194986e87.34.1754404009682; Tue, 05 Aug 2025 07:26:49 -0700 (PDT) Received: from localhost.localdomain (178.90.89.143.dynamic.telecom.kz. [178.90.89.143]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-55b889a290fsm1976379e87.54.2025.08.05.07.26.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 07:26:49 -0700 (PDT) From: Sabyrzhan Tasbolatov To: ryabinin.a.a@gmail.com, hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org, zhangqing@loongson.cn, chenhuacai@loongson.cn, trishalfonso@google.com, davidgow@google.com Cc: glider@google.com, dvyukov@google.com, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-um@lists.infradead.org, linux-mm@kvack.org, snovitoll@gmail.com Subject: [PATCH v4 9/9] kasan/riscv: call kasan_init_generic in kasan_init Date: Tue, 5 Aug 2025 19:26:22 +0500 Message-Id: <20250805142622.560992-10-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250805142622.560992-1-snovitoll@gmail.com> References: <20250805142622.560992-1-snovitoll@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Call kasan_init_generic() which handles Generic KASAN initialization and prints the banner. Since riscv doesn't select ARCH_DEFER_KASAN, kasan_enable() will be a no-op, and kasan_enabled() will return IS_ENABLED(CONFIG_KASAN) for optimal compile-time behavior. Closes: https://bugzilla.kernel.org/show_bug.cgi?id=3D217049 Signed-off-by: Sabyrzhan Tasbolatov Tested-by: Alexandre Ghiti --- arch/riscv/mm/kasan_init.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/riscv/mm/kasan_init.c b/arch/riscv/mm/kasan_init.c index 41c635d6aca..ba2709b1eec 100644 --- a/arch/riscv/mm/kasan_init.c +++ b/arch/riscv/mm/kasan_init.c @@ -530,6 +530,7 @@ void __init kasan_init(void) =20 memset(kasan_early_shadow_page, KASAN_SHADOW_INIT, PAGE_SIZE); init_task.kasan_depth =3D 0; + kasan_init_generic(); =20 csr_write(CSR_SATP, PFN_DOWN(__pa(swapper_pg_dir)) | satp_mode); local_flush_tlb_all(); --=20 2.34.1