From nobody Mon Oct 6 20:59:03 2025 Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) (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 366AF2F85C2; Thu, 17 Jul 2025 14:27:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752762468; cv=none; b=Rn07AXIBMqmhRv3T3Yy2k+gb+2SliYMC1GBoeqbF+g+CRnDaKtJjYs1qnWqMvvtSUzilDujqAYfRwjs8So5k24F8gpPAQyzyIq4SEjuL59ECMJyAiWIyr9ofISLMNxbqlwUSksuiGyMxNRVO6Quhkfc5UIStVQKpyhMwLDiiagQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752762468; c=relaxed/simple; bh=u5QXaPJcX4chKtk2OMOGLWnLjy+FfyCWJZqxtReexR8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rk55Sqb5yQ2zCNI4vvPGkYefgmmzsOSZJvAXmmv2VDKylsvS/uOtmScoK1fCUH74bFstFOi+TXGNV+YwhJKl60i21aFBcoJxfrX2rG83htNtvVREg1SaxFnTMdVXm05OFua2j2TScJxdL30l6+BGjOMOvGLd9XLNH2r0iB14Ids= 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=gxJ0AKWx; arc=none smtp.client-ip=209.85.167.46 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="gxJ0AKWx" Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-5561d41fc96so1208516e87.1; Thu, 17 Jul 2025 07:27:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752762464; x=1753367264; 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=Y3WcQqYlZ+nGmkIZO7BZjNBhDOM5R3Ju7Hd0Z8GcHCU=; b=gxJ0AKWx0PJ/eR8udQ+kIz9x5NtG9rIhgGUT2Uc/HFMsiEspfekmm2tglOMOTUBtP3 Us5nLeyjH41Q4TELlNvC1YBTcSgOE83dmZpc2ikkCPSbP6jb36hRytggmMXxQLdB0636 Qcy709z7X3HWE8r/KYkyUf7HMOyYlt2xQ/N+YM3b0MKj47BLBw5rNMtyq/BkX/kugwrY JZIWQNrVuN/NyEmXcS8T+hUdYAwXld7S0/nTU5Uebfw49PomcdQ+/Dw7Z5JjH4wGDV9g ZD/0S0pkDYKOTihlVnW/SFAeUDqOKJRr6/rp7/mazoViMHtDxxL1K2+3H6+sxfcUpxDR 8yxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752762464; x=1753367264; 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=Y3WcQqYlZ+nGmkIZO7BZjNBhDOM5R3Ju7Hd0Z8GcHCU=; b=TIpudMeubLBzAYeN4wSI19JcE++Dm5eIvrkKV3BPa9RsPrBfkQhOmV2e6EGGMbc4gQ 13j/tGhRGGtZ34uJeIH1iw5Wr+TYo/t9Ul/XBvEfypZqjtKWQFwBVzYplwUdXMZuX9Uw jIbP/i0f2mqNkoUCFBr5Ou0fLBBVixUKWdcKplmjnDxZsQANcNKvRCbcGTpfBnKOfdhU RUSkl4r34eYJo2VtOSgD5O2aBEc8BT+ZjuAYdd+BgDqIZjz/Z41fuqrB54NTRtAcfvIJ YrfzOmQTfxDxhEyWY9JhkaIsiTmxucaOpOa2ZwYoDl7LHCGUYc30PyuHczyhdF18JfNi 4Taw== X-Forwarded-Encrypted: i=1; AJvYcCWKnCLO7zIMF/WxxktOb3ja3MP/6Q1mvGCKl5M5xI1eIhBMpX2cTNjppWDDq1c4amWfWLbRnEeo3PnxqAo=@vger.kernel.org, AJvYcCXydHm24MFIsAMJYBx0zfKhqHQNISwCgqA1Pbx5AmW0axJM8zjWyMkiVnl0vT5agWinvjfhuqOgf67J8Q==@vger.kernel.org X-Gm-Message-State: AOJu0YwH+IALKmrRotNZLHRL1oOpeQGK0yNVr4Qoyvd1sjmv5Hj/7cp0 iVLRR3Frbcr1TLQQxn/KaZO69x8vWeWodMhsxvDBkigcZjgu9uETY1sK X-Gm-Gg: ASbGnculETvS60ldyx5EeS6D1VuXCxMmztlDq11v3Ryi8zYcoiKRw7I8ADB1MQo9dbH S8KB2KXzzNiDWUt6VWwGnvOtVvqED4Z9c8hkKI64bZlEc8dRcD0hEtWQHTha2PujWS/UwfnVKwu UNBJ3POLEthien6hIhHPV5ODXMkNliXBp3Y+osoAwq3nP4uQ3ZHQUhoo6Pdb1eanuxp4hEzHQKc /juKIQhpdSEHLysSGE3zT3WmqgxQduJfK/ZGi6TMvnmz7KxJSlHBHQIcusv/4nZPaFzrVZtDvlB KVbklLewlccNgWiDTLTfsCCc1E8GWp95hk9HrGWkPp92cuc27SnMklsxbsXKfWmXZMcCYenP/uA LFixCkijgMy5m08vqzydNGoWzUJN0fyogwPlX0LNzv0vHSYQ45hTaJVuB2oIHpIXEehKp X-Google-Smtp-Source: AGHT+IF/OloHnnX3mhASN203Qn491wmneqjv+U28AgmKB7HhI1lYsnMn0p3m12S3GUHmxAKLZ2vT4A== X-Received: by 2002:a05:6512:15a9:b0:553:2421:f5e3 with SMTP id 2adb3069b0e04-55a23f1f963mr2211249e87.19.1752762463801; Thu, 17 Jul 2025 07:27:43 -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-55989825fe3sm3022975e87.223.2025.07.17.07.27.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Jul 2025 07:27:42 -0700 (PDT) From: Sabyrzhan Tasbolatov To: hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org Cc: ryabinin.a.a@gmail.com, 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 v3 01/12] lib/kasan: introduce CONFIG_ARCH_DEFER_KASAN option Date: Thu, 17 Jul 2025 19:27:21 +0500 Message-Id: <20250717142732.292822-2-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250717142732.292822-1-snovitoll@gmail.com> References: <20250717142732.292822-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. 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. This option allows us to: 1. Use static keys only where needed (avoiding overhead) 2. Use compile-time constants for arch that don't need runtime checks 3. Maintain optimal performance for both scenarios Architectures that need deferred KASAN should select this option. Architectures that can enable KASAN early will get compile-time optimizations instead of runtime checks. Closes: https://bugzilla.kernel.org/show_bug.cgi?id=3D217049 Signed-off-by: Sabyrzhan Tasbolatov Acked-by: Alexander Gordeev # s390 --- Changes in v3: - Introduced CONFIG_ARCH_DEFER_KASAN to control static key usage --- lib/Kconfig.kasan | 8 ++++++++ 1 file changed, 8 insertions(+) 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 --=20 2.34.1 From nobody Mon Oct 6 20:59:03 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 D48472F85E0; Thu, 17 Jul 2025 14:27: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=1752762471; cv=none; b=k7BatVBtZU3aNk8RzWik46niMZgQHPJgQiVMrtVTG/DInQvUMgTYcfFUjTFmtIRxGTgf1cUbonsCrW4uhnqGbOJYOsvw6XGYYb1xOgh7FSr3MEZJ/rYgKeYSCaE2QWArCY7SrVTVFVDE4OTUwIkWvNu/8mmiOooEiLXrtb13H/A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752762471; c=relaxed/simple; bh=3XkMQnx15o9Jp1ANPcHB9A6jUuSUcIQueX3v/gt9pfg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rk0KBwBrq7JG9H0W59KlvL+IFthXvAXQyUOOjMEH5tLdDig4kfaPqBOJWfYeDxbJ7AOscjHloeQXhdCbaV2qTU6JO2UbPPJRgzlvUma9CxLaNuhNT743E0YlEgsJyopeekINcr/7jnpyoNfsiyt1MWbIbgvYYKL8Z0kyo9cU7J0= 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=ZL0QX5bu; 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="ZL0QX5bu" Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-553d52cb80dso1223050e87.1; Thu, 17 Jul 2025 07:27:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752762468; x=1753367268; 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=CtzrgmhXOlDN0Ac+5J9qvgdYRUcauOXxnB1y58JGUsg=; b=ZL0QX5buvRMOObkkIbD90TOzgc2hQaOPW68AkQ1XZ6SJ4WQphYXm6tbB9/jTqRJNkN pN+XS4sfv9LI2MBlJWwTioqqNpFMS59teBq799N3pkmK6anQhpcBAgr8UvnFt+mDhIQG KaAfsKw3fJOrSxB99RICU6GjUq41Q2mOBKF7QFzwYX9XwlM68AzxBVm3c3KxBDKni968 X9Sq0y9V9nZUF3f/qKpv+Jf15ZlvQCjWIuWl/WuoDO3lsq7dfJ8H/D6/HbZ5ieyt7zFU wIHgDC5WGMFnky4uAx+XBi/GfsJYSWYztAqTHnVuIz9YxuAp2G8Bm/nJBN/K8vku6zsT TU7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752762468; x=1753367268; 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=CtzrgmhXOlDN0Ac+5J9qvgdYRUcauOXxnB1y58JGUsg=; b=DUO4BPGBGx3yS5hLnX4IK89IQJMZW89LhjVlDX9dtBQfA9Hjd/V39TN2yfXoD1a3XQ EF2NEhMG4ILb1g8hWznln1I8M2swvQM/+zT2BumNl459kzogN9DJNxJogoYB9d8i2tkf jUDnVWJMdDI3oE0864lzvxsZPpX9/4zl0ZcNTY7MhQRPrWq/2ovSSNoAg5xa+bZdLUGH vwHqPyBHTodrc/F+ImR5dco2ii8gGox0XxIIPjPik524IQtKRXejKvWdbP24MOaiBgLz NihtQvESnW3omh56P51U6aFlxa69CMi7yR2W/nF/bZxeztoTtrKT1LgFQy3p7+LBPh2q Fx2Q== X-Forwarded-Encrypted: i=1; AJvYcCUw9B8SK4DYCgon0CdyCw1zL6ngCOMkyAf+eF5+NiBq1OezrYATQ0ZQ/AskjbWv6HEYSytWin6YFZ76FA==@vger.kernel.org, AJvYcCWTPRWBrSa6w0xgGNvhmKKnax8AWASEYOfT7P2gK1HMGHPKSX8XqcidZM433qSh4ncZ7+TPw/QmtmH/gTg=@vger.kernel.org X-Gm-Message-State: AOJu0YxJPKJG6Tn389LdO+iDpQL5wzjFccT1ZlQxH6KW6qkzzuCWqXJo /BM9Y47iJs/rKzN8enOPNLL7oYyQtLtrsXys5lrTXslaVY5gJUDkHQEm X-Gm-Gg: ASbGncur3E8LyxpvOpXpVNzVryjC0icjaDm/FfNal27i+b1AIldvar/w72RNQirXFVS Aa5Wo2FoIhzysvwuD8JPXm02B37XwQ4/ytQJ2ix9FGQyjxuJIYl1bHwfBmjYN9OtZiJ6n604gWQ ytahONpze09qc8N4e9SgSEX1+JZrHIDptbKnlHl0yYVZPrXzLbeqo+TbunjvuId9/FOq0P3ePpt 4VTPrKhSmxns27tpF/ZBz5CdqeXX4gwfKb557m7zFeFaefT17f80bxpGl0irbMnNPAVR2uRJ+N/ 91PQ2CgPzFBo1h4K5Hy43gfAZzRVM3jf4GGqlJCGPHEI99qumqguAYLVZ3ndDTjh0ytwyP8EeMq aJ+Z8BowHlxFnkPmHIWcfo89gWC5O1N+9Iq8XLlji/aY3LcfU4muibgq0FK+c0icGK6Nh X-Google-Smtp-Source: AGHT+IGFU/9g3XHsICupAR2OwO3I+VhsbowqxnMbfcNePQa3z69BAqmHMKuwXCkJ+RRLdmWNcXslSQ== X-Received: by 2002:a05:6512:1254:b0:553:2c01:ff4a with SMTP id 2adb3069b0e04-55a2fdd97dbmr24308e87.3.1752762467575; Thu, 17 Jul 2025 07:27: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-55989825fe3sm3022975e87.223.2025.07.17.07.27.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Jul 2025 07:27:46 -0700 (PDT) From: Sabyrzhan Tasbolatov To: hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org Cc: ryabinin.a.a@gmail.com, 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 v3 02/12] kasan: unify static kasan_flag_enabled across modes Date: Thu, 17 Jul 2025 19:27:22 +0500 Message-Id: <20250717142732.292822-3-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250717142732.292822-1-snovitoll@gmail.com> References: <20250717142732.292822-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" 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. This patch implements two-level approach: 1. kasan_enabled() - controls if KASAN is enabled at all (compile-time) 2. kasan_shadow_initialized() - tracks shadow memory initialization (runtime) For architectures that select ARCH_DEFER_KASAN: kasan_shadow_initialized() uses a static key that gets enabled when shadow memory is ready. For architectures that don't: kasan_shadow_initialized() returns IS_ENABLED(CONFIG_KASAN) since shadow is ready from the start. This provides: - Consistent interface across all KASAN modes - Runtime control only where actually needed - Compile-time constants for optimal performance where possible - Clear separation between "KASAN configured" vs "shadow ready" Also adds kasan_init_generic() function that enables the shadow flag and handles initialization for Generic mode, and updates SW_TAGS and HW_TAGS to use the unified kasan_shadow_enable() function. Closes: https://bugzilla.kernel.org/show_bug.cgi?id=3D217049 Signed-off-by: Sabyrzhan Tasbolatov --- Changes in v3: - Only architectures that need deferred KASAN get runtime overhead - Added kasan_shadow_initialized() for shadow memory readiness tracking - kasan_enabled() now provides compile-time check for KASAN configuration --- include/linux/kasan-enabled.h | 34 ++++++++++++++++++++++++++-------- include/linux/kasan.h | 6 ++++++ mm/kasan/common.c | 9 +++++++++ mm/kasan/generic.c | 11 +++++++++++ mm/kasan/hw_tags.c | 9 +-------- mm/kasan/sw_tags.c | 2 ++ 6 files changed, 55 insertions(+), 16 deletions(-) diff --git a/include/linux/kasan-enabled.h b/include/linux/kasan-enabled.h index 6f612d69ea0..fa99dc58f95 100644 --- a/include/linux/kasan-enabled.h +++ b/include/linux/kasan-enabled.h @@ -4,32 +4,50 @@ =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 +#ifdef CONFIG_ARCH_DEFER_KASAN +/* + * Global runtime flag for architectures that need deferred KASAN. + * Switched to 'true' by the appropriate kasan_init_*() + * once KASAN is fully initialized. + */ DECLARE_STATIC_KEY_FALSE(kasan_flag_enabled); =20 -static __always_inline bool kasan_enabled(void) +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 */ +/* No-op for architectures that don't need deferred KASAN. */ +static inline void kasan_enable(void) {} +#endif /* CONFIG_ARCH_DEFER_KASAN */ =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_enabled(); } - +#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..51a8293d1af 100644 --- a/include/linux/kasan.h +++ b/include/linux/kasan.h @@ -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 diff --git a/mm/kasan/common.c b/mm/kasan/common.c index ed4873e18c7..c3a6446404d 100644 --- a/mm/kasan/common.c +++ b/mm/kasan/common.c @@ -32,6 +32,15 @@ #include "kasan.h" #include "../slab.h" =20 +#ifdef CONFIG_ARCH_DEFER_KASAN +/* + * 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)) diff --git a/mm/kasan/generic.c b/mm/kasan/generic.c index d54e89f8c3e..03b6d322ff6 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 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/sw_tags.c b/mm/kasan/sw_tags.c index b9382b5b6a3..275bcbbf612 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())); } --=20 2.34.1 From nobody Mon Oct 6 20:59:03 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 AC3D02F85F2; Thu, 17 Jul 2025 14:27:52 +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=1752762474; cv=none; b=N0q41ohyN4ljiOhh4OrJGot4+SsdpZbrOySdkSCj9pPU19eYKasyAnvnLCPGXTedcT/I5vgXvqslXJ5q4BjkkzeF2v2L8glRwRn7lv0wChcPZ+88Nu+V8ioySw/CB4EH7lVax5562o95fw+tbUvXN3b74SN4JrVeCKAJwUH41dE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752762474; c=relaxed/simple; bh=ESmhSIrQQTFnMHkO8fddR2vJBJBoLh1uTvlGgl5i9Zw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=tM7eZzA4pCysybphqYh9mUjLwufaSwKW3Qwqs/8zoIX5UCV2W9LdB4BtOQHuY/cMLhawPbehjU4wyMhPChHfRFgdoDeW5yPnovkmV+bwa26CrhZ8eDnfB0LW3j0cWfr+XhLoorcD3UxLRrUUm8LpZCUC4YAxk85hwHg6HhVquNo= 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=UWGN0p/6; 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="UWGN0p/6" Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-553b5165cf5so1236392e87.0; Thu, 17 Jul 2025 07:27:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752762471; x=1753367271; 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=9U6pXPOm17QNJUh3dL0X5SvDfkuBM+kFPXcpz1Z7hWM=; b=UWGN0p/6SI1YYj4B0toUTlnd3iElp8QkgaxbipSbaAs6ub9xjdvWzzFihFQHJtu1TQ mIQfdKYmMGaJJRjyhXGBezLRSmjvqwYo560GM6XYiYQGgqI+K0Rc5AlxXlJ3B6TMGdaO VFelgmRUoQlRQ19wWbM0XvmOS2G++9fGrmQVnreaw67zO3z3LmQIrTK6qDxh0FadA3Pe wmRhYqlHtsTYxNMajcZyQfvXJqsSO62gQMjzTF3iu7ir42ZTI7frvfzvM5aA8kxtucVR 4tFEbY/9+08bxL3lOfkZpN6fIvKT6gKYBVATyaMXWyXL1Eg02HzBlBv/ekN7tu4MWBtp 5lPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752762471; x=1753367271; 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=9U6pXPOm17QNJUh3dL0X5SvDfkuBM+kFPXcpz1Z7hWM=; b=dSNJOfpZWGfsY4MrMBgLrr0BYZcH0yGCftgtyBZbstKtfE3RI1yhmaDS59HFouZuIQ ShB6FVRpgTpX3B4o+V/49hxlnwwTxa24iN+4Ag7etRj0elo/zLZ8zCXuTw+/HMud+VLZ ub+qObVLAwX9WgC8vC36lgjqU9bbDa8ycyg/6+AG8EO9ngN1FeSpcYV+189mHMqAvQoy c0lhVuS6n9CK7nKOiGgeA9iyK2kSN0SxR06dQ0WCc6Jbd8u+wSElrRu6J8cIvOx816zs JHjqg8Vi8Vsr3htct6jmDRP9GGKKKw3mUChPpqaigt7vsbjqaDsNqSOt/Z62y2dz0jeP 6rog== X-Forwarded-Encrypted: i=1; AJvYcCWMh0Srj127/6YJqweew4x0bCujSOrEWJ6I5AyDyQlXjD8ozF2ILSMOu3cUEiRV9RIKSUqlIRJhVIEteQk=@vger.kernel.org, AJvYcCXL7tfSntmf75wg38LdjQj5BoRfC+bG15GetCrbmnoEZOKZO1GFHeLXIdTbsLFtjRFGVEw35Qe6tLMhVg==@vger.kernel.org X-Gm-Message-State: AOJu0YzJNW8zyUfrx2aC4yPlsFjlNw60PUcxe6Wx/xrRE+xq7CwnVAhi iTTsLXaot1540x26HmUIeWwVDxs/8sroMMJGhQ4Sp27sdPUtuDlT4nJj X-Gm-Gg: ASbGncuh4z1o9DirgaS0DCdfiSXVNbhMduT9J5fgIhq6utALqIslk631ZoX/Wl8nJj3 hpVXdLlPsTJTefBO0v9HWeAHQH0/zTBDCmY6inq9hyHK6b4xybylNwy4fuyp8Es+OB/RFf+1Qxp n7D6/oMZsoyiV+RFL0MgROKMRBzS1FK7Zf5pt5c9sh8NxbUX5oUHaoy2K8ZxPQaNfotlEZWP7OL m78L7QuYT2vUq4FEtK9XDeas1U1gT+PigEIxMgzcOoVKL0EQB87XvNp9yU25ubYV6JZJhQNDc7T rliVTvWhohD5m1BzKGQfd+ViZcPm5TpkvNvb+XpIHIvIB2zqvh9R5GwdcqEfJCI5EY2N9R28FMn X0NP9ZSeqnUfh1ic887ph8fkQa3ahmSuliWaAPeTqPpryhd9Nvt7tPx2JqX8SZKFIf/IK X-Google-Smtp-Source: AGHT+IFxg66CFuCFZcq7YEHf2jsYRpZfJ3opYk2GjZt6qN26RYtZXaN505yqdxOnxSgHLvlINQObtg== X-Received: by 2002:a05:6512:78a:b0:553:2868:635c with SMTP id 2adb3069b0e04-55a233db5f5mr1804298e87.48.1752762470559; Thu, 17 Jul 2025 07:27:50 -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-55989825fe3sm3022975e87.223.2025.07.17.07.27.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Jul 2025 07:27:49 -0700 (PDT) From: Sabyrzhan Tasbolatov To: hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org Cc: ryabinin.a.a@gmail.com, 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 v3 03/12] kasan/powerpc: select ARCH_DEFER_KASAN and call kasan_init_generic Date: Thu, 17 Jul 2025 19:27:23 +0500 Message-Id: <20250717142732.292822-4-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250717142732.292822-1-snovitoll@gmail.com> References: <20250717142732.292822-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. Also call kasan_init_generic() which handles Generic KASAN initialization. For PowerPC radix MMU (which selects ARCH_DEFER_KASAN), this enables the static key. For other PowerPC variants, kasan_enable() is a no-op and kasan_enabled() returns IS_ENABLED(CONFIG_KASAN). Remove the PowerPC-specific static key and kasan_arch_is_ready() implementation in favor of the unified interface. This ensures that: - PowerPC radix gets the runtime control it needs - Other PowerPC variants get optimal compile-time behavior - No unnecessary overhead is added where not needed 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 --- Changes in v3: - Added CONFIG_ARCH_DEFER_KASAN selection for PPC_RADIX_MMU only - Kept ARCH_DISABLE_KASAN_INLINE selection since it's needed independently --- 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 c3e0cc83f12..e5a6aae6a77 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -123,6 +123,7 @@ config PPC # select ARCH_32BIT_OFF_T if PPC32 select ARCH_DISABLE_KASAN_INLINE if PPC_RADIX_MMU + select ARCH_DEFER_KASAN if PPC_RADIX_MMU select ARCH_DMA_DEFAULT_COHERENT if !NOT_COHERENT_CACHE select ARCH_ENABLE_MEMORY_HOTPLUG select ARCH_ENABLE_MEMORY_HOTREMOVE 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 Mon Oct 6 20:59:03 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 214862F8C31; Thu, 17 Jul 2025 14:27:55 +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=1752762477; cv=none; b=kyTG8kI3zRhUhIcypXHtswTZkFe4N1Wmn911j5FvTuQljfQY2I2XqsZoEiKnRQwyueTNr0B8q9cH2kzbdgrzLD/oMyTcWktUvJHr7uuM8lzvhDwdV4MNooP+JJV4iGM9Q1dd5w+xz1by8NdLE079XFTS75G8Y87MQQP9pS+jPhc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752762477; c=relaxed/simple; bh=y2h7T4ppakA0lW5KEjIcMv2w/pJN9DVxFk/7JsnNCno=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=e9AM9MK8flkeGIDPu39W+F/Cfb0WEztTF0QTjoke8eqG1nAh7UHsgPUOmo42ibV198i9uDOf7pj1thsRhUbUBD9bzzlOvgC3j9T7t4cPCckIdR3GsPH8srs2wQd81ISs5GKO75xDvIJcYevnnp06JLLzRmPwg7XcSXo8Q4oukyA= 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=julCJgj+; 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="julCJgj+" Received: by mail-lf1-f49.google.com with SMTP id 2adb3069b0e04-55a25635385so1157247e87.3; Thu, 17 Jul 2025 07:27:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752762474; x=1753367274; 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=Bku05+DNIlaPeHqRJ4y/c3E9v08tlUqoZ6kZCd1AC2c=; b=julCJgj+59JN8jflldPHTiSYv1uXDEby8irv79STcr2A9h96Q+C2dm5GWKkvT+6wVL ZWgtHzks7h1PY1B1IKz6W7pvjFo011Mo8F16kNIHMGHUtJDRkTixKWtCqWb+5mNpqgMA I+nuD+ksyAWCFE4wig9INq7jZKJD2ntmzQvmvMwb5d+CA+qghQEsgzqlAHI5wfnM1nW/ wD0APADLEziZJv+KTmPo3r5XlrNjLGgnErfHFFI8Qih85AwKa2lHehvjr3AiS97g0nWi kZdPHSf99CkfAYN6bqzZH3UZ+L3hO5eIbemaiXm7B+KpaRBx07P6RIuG7ljZ4bpv9GmO Jcfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752762474; x=1753367274; 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=Bku05+DNIlaPeHqRJ4y/c3E9v08tlUqoZ6kZCd1AC2c=; b=EPeMdxCMcz4YmaqVuOpdWMKq8Hv8rXk81RtOwpzr1Xff51B7JFHVrlg7SoZaqkEz4F CzPhKeiU2Ke8KBQf0ZjSh7Nph4YIIN1R2X+rQDoDdnRl358xO3n4M5Y8MWadRpfvD4gd wky9BpCBoTZIggllPJrONx7LU+k5FojHtgT6/QK8u/xMHUhQxkiMGDMdix9jcB/Xd/Wf uUK15MGrd7ps8mmTXn0/SI0oOUGOe51+Scj7XWTAtdzalnAG2jiNSSFv60ySzQ0YZfzk 6lwfL9+bOyflDveTg65NFOG6vEldvkmZoEEAAHEYeR8lWpyX/RQc9pjF46O75CtBuRHt Q7wQ== X-Forwarded-Encrypted: i=1; AJvYcCV8Vfen62xs9zdwlZeaU7mTQW0UfBBy/gBpRC2rTtQCh6qlMIdW8bE7QkWsE+6oK6aiPsRswAPbe8F+ig==@vger.kernel.org, AJvYcCWw+Zu3LyC1q2W0r3qf5JS9XldMQ82FdaeItaZF59JJ0ipOhmextE8Tt/pG/9FOPjNY8Elkg4WS6UrX8yI=@vger.kernel.org X-Gm-Message-State: AOJu0Yxr15CYNS4gCrdCp5q8vWEqxiljIncfY3jrRSm8ZoMFGQyX7ICV numQJFaQGpK8INWmdJYC2P9Ijrg6O4TmCs027FGWxiplFPNmpX01Gc53 X-Gm-Gg: ASbGncv54YrE+/5nYFCQd/REGlUBUv1KBqjfV5OTxqZu4X3pHNgVzUeZ2yJubpHx9e1 8624qRYE+Ql2d2PTVa+u83AMzII62IS2Eg5vfb7rdZyCsXV0eCGlv5mTWnNYsO+FEYS6l6mrUuP sAvsnFQGxzHKatsnkRonl2DIaILStfljaoQ9+WfDQZRF/euurjhTwC45XwqYjlK3+SopGhHWX6d GC3etNl+r779s/cfABkaKVDZK2NIp/Ivff1WMEYsc2yw6wS52UYKUgp8ai3QVtiWqyKfMgzwqkX Ac0OsbJXtUp3vIEUYg+xTn2qQpHLPFtuY5D9QU9fbE9kbuC+1dJG4RE3s77Ss8swwNBPorGm0Pq kCnbSh0MQx/csDEPMCFn0plT1dvz7Gwh/7F7Q+dfNuVvtbi6F9TJQcq2QrPQijsjIs3Pj0zyAtx JCWxk= X-Google-Smtp-Source: AGHT+IG3RRCZYJkrl0IFxNTcXHaC63cFJOMHtvbXLWcJf3SefCDeVNa3EwWa0HZJEZD2h7TP1+bY7g== X-Received: by 2002:a05:6512:1452:20b0:553:af30:1e8b with SMTP id 2adb3069b0e04-55a233affa7mr1874039e87.38.1752762473999; Thu, 17 Jul 2025 07:27:53 -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-55989825fe3sm3022975e87.223.2025.07.17.07.27.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Jul 2025 07:27:53 -0700 (PDT) From: Sabyrzhan Tasbolatov To: hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org Cc: ryabinin.a.a@gmail.com, 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 v3 04/12] kasan/arm64: call kasan_init_generic in kasan_init Date: Thu, 17 Jul 2025 19:27:24 +0500 Message-Id: <20250717142732.292822-5-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250717142732.292822-1-snovitoll@gmail.com> References: <20250717142732.292822-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/arm64/mm/kasan_init.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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 Mon Oct 6 20:59:03 2025 Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) (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 7AA852F8C47; Thu, 17 Jul 2025 14:27:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752762481; cv=none; b=fPfaYR1cRS9WZK4P7lUCKMRZMK3Kg3Tgqula499HwbX3/HB1qeyTmlt52z8bo9FSjNd5YrvZTzVHopKT5kgS3YCG/ey/h33S5zuIeH6F0akzTknRCdZQvb00l+IenP/o+n3qPzGldneXwq9yEE+ozGz7slBDu5jvVFseT1g8lOw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752762481; c=relaxed/simple; bh=13fOJSUT1Czga1bfp1m5xo8KIEdG5XIY1TAjVaD1C0c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qLuE9wKg2ZSDm4Xl5eS/YvO6PPTsme8nubsa5UPlytUW4OK4nIi7S1Nevpi7gdihcA7zLJCO/SHFGAJmz2Tf7UZ7R/zO3d9ZqCmmrT1kGCvWSJpvYAUDXARIBIzQnOV3TnvmCgs+EHxf+FIwkdSfOjzkrq8B948hv/9c1KCAtgQ= 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=hJ5bTWAw; arc=none smtp.client-ip=209.85.167.52 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="hJ5bTWAw" Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-55622414cf4so908989e87.3; Thu, 17 Jul 2025 07:27:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752762478; x=1753367278; 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=tj0938MKzJL3dLX2pSfruVoI7qA5XRt5dsqIl4I0tCY=; b=hJ5bTWAwXBgDIMBeSlFEbVfyL7KOV5oMnrsiVShE04vygdTx8CePFgbV7QooJg3zNa Tj0cQ1oC8FydJG1wh1WIAj4XwHXpcKg8j8Zj5LONMf27oXSs4vBgsanmHGfga4axdRo/ Tu5QpZrsFJktcuY01ZmHyLi+VOL3QqyvTj9stfYP1ukRo8VRIutECiIL/3368zfOb6UX ltLh8n/QpvqpuNqKromXzwNznr9n5Dz+jZlMTIbT11aKlpQZTWJ2bpb4Fy4jJvQteuEl GYzCAcUn3VjzvA/ojR8UnuqloydATqn3mk0LaVoVRLg1+NtldAB3MM6DG2j+PKufwgFo FyQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752762478; x=1753367278; 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=tj0938MKzJL3dLX2pSfruVoI7qA5XRt5dsqIl4I0tCY=; b=HdXi2Omhvl/2WuKogJp29YhrMunv+Yp9K1h/6VEVu7XdvRhkcqE7gTjtE5L6eJuNF8 lCCk1LKihCOQQI2ZsQroUHxLxA+BIyG0dTrUGr3MbmIjvgLQJ4HhtomGu+0s5f9dZutE mTrqr9ywKdWf34qkAo/659zowk7QVaq1n70v/l2Ju3xKhemB16Y7JLYXY7eh2O/bWvd2 sKvBLSnjVLLS/uryPE+fsYUb5T/rle5C/4k2+XWAtgi3da1gCvC26BE+70B4ZubEbJvh b0lGE4XtfVENsjibMT9t62l4LHa1FPmQeWUulEUeShgj5/BhY92JWsyiOQM0QbV7XmT9 7FUg== X-Forwarded-Encrypted: i=1; AJvYcCUAmZv3ubm/ReckkLcxYwL3wLHyzQIJp8thamjbg+GPyc7iLf2AFk2pd5y9EJ2ryIsbfZIdVA4HDMf4OQ==@vger.kernel.org, AJvYcCVpWnGfnmw2sm7CWcks+O0yw3c72tmZt+buB2JF82v5nfHsgyjKgBHs0wY6iOwrKBtrRMNLBTpXh543fQw=@vger.kernel.org X-Gm-Message-State: AOJu0Yxj7s3D+Nk/23ZuN4WHG2jPAuyiOpoh1ydxEk3gebbtBi9Gbr3G hDGbqj2/rXVXjZGEUwWmq3af5jq9OF2PrlKtt0gyqRP8RNrOBXKWcYQ0 X-Gm-Gg: ASbGnctLe7nUwXnly44370VSv36q3NpRdaqKFIfN4CRpSFFJL7ibUlrV6gS5Vn4JZiz 4xWrW/3NvBHDwsZ6gh34GSu8haJgKwuwEQO4e3N3dJJr0pD0bta5QDLbheKjRI1kQXNIWOx4k6y IqX0V9vAyn5XWj77Cd6jekUzghkRKARWTLceMzScNVVi/AusxUhv1dGpMv+76dAsusZmIVyll+g xbxCRRU/iuc9IZ2NsseH8o+nMeIodHgv7e8QKWa4paGggSnSaUVIoHaIUHAOnMVhir6fdKukFa/ iAcB7tl1MJYNrOuOcDxKsW1gB1YdwQ1KGJ2ztog/nzTgmgScSWb0khntpHP/lQDe6Fa8rghr6UC MY0TvKhI9UgDhRBKZaIRbJRaKKDkgbHCKacvwdyS0eXh33reIyEW5yM8rx96zyj9KQZ7Hz79mSO WYOAk= X-Google-Smtp-Source: AGHT+IEgw9d3ZuJ+QMY1MR2nr/3qOXMGIgWnHA/W5FJZ5VigpFpebSW6/CzlCrWt32sYjXVTTwrchg== X-Received: by 2002:a05:6512:360e:b0:553:d12c:fef7 with SMTP id 2adb3069b0e04-55a233137ecmr2448163e87.14.1752762477204; Thu, 17 Jul 2025 07:27:57 -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-55989825fe3sm3022975e87.223.2025.07.17.07.27.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Jul 2025 07:27:56 -0700 (PDT) From: Sabyrzhan Tasbolatov To: hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org Cc: ryabinin.a.a@gmail.com, 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 v3 05/12] kasan/arm: call kasan_init_generic in kasan_init Date: Thu, 17 Jul 2025 19:27:25 +0500 Message-Id: <20250717142732.292822-6-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250717142732.292822-1-snovitoll@gmail.com> References: <20250717142732.292822-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 arm doesn't select ARCH_DEFER_KASAN, kasan_enable() will be a no-op, but 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/arm/mm/kasan_init.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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(); } --=20 2.34.1 From nobody Mon Oct 6 20:59:03 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 D69782F7CF5; Thu, 17 Jul 2025 14:28:02 +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=1752762484; cv=none; b=hGXnhfz6yacoqYHZ3xvS1KRtzLVpYS40/a2a8ESBb5MiHL3eLh83MXcfZ6VZe1hn4KQCidPK+ABNElp5fV7w2Gm5ZN+Dqs/XMojWLbrNkTeICBz7fakT0RcX26QAU2JsNhNkovTnnsfDRpBb3iHcUr2rXK0a/3grw1pVW+6DYns= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752762484; c=relaxed/simple; bh=dUvJbK84nrPOQrC8AFlAi1Pi4GwbCctj5hOdwNI27js=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gvjoH//bDErRvYZ3SnI4aru5cHNhrmTYikkXdafAVCyineiVHlVAWXWpZtPvTPlPP3dFl9uq/JtIzPUUp6NnRW0SfHDSLoU3qSck+srnLC5si0WG4FILVyBfNSEj2mf/FIf7pnnBpMyywoZDgU/pZki/VDr7l2nLVGNYm062UPk= 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=cArtB6XJ; 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="cArtB6XJ" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-553b5165cf5so1236536e87.0; Thu, 17 Jul 2025 07:28:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752762481; x=1753367281; 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=cArtB6XJiJa7omxjrrmbVZew7KYwXsNCqZlr4JcwLi3oLNYvt631IrMkGSbKte45ux eRfxFrznxpBgGulGhWqlTXz/q5p3mqsx7UNfVmdMeMdkgkdL0mQHN8fnwVnU/FUZfpqW t9XXuihGBugh/WFq+lQiuRTkZJ5wgATcaoDRZ4n8wHrhba0iA8gEDG6wPGtiPKQQE1L5 /WFeMDCZiT1ooZyIdWc5ufYy3uw+QRbMKQ2h6o1sTTxOeR76ghHsLAp5cgPGGHzv2ujS WcQX64opZYmgH+/MuSi8X93Z68hSC4gL1o6N3CuRJMLpO56YhYnxtKGNkZ9AwTD0hXc7 9ZRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752762481; x=1753367281; 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=qszIE5eot97Ja79n7UbgvnlVHpiKTxHzpJ9086oceoT/LLnUuUN5b4FC0B6lWYgDmG AdxHpjqQdqqa9mqbByEWXTX8drYx18dfiE56zLEI6Vy0BOy62+8Xv5dmSW+1F3vWuyT8 phlY93YoNhoD/YWxQbtrc3wAwj1u2Y7L0ZaJ+c1qDq0Ad1Zy4vJzrhegC8BRRxY0IHMa FeeuQH0vDo+ZkdLC0tMerq4opkJUK5/L8c5/p7m25yBzZ0iMJnJI9SYiSy0mGiSAQJqx GTrwI7mYDgjf+CB3bUPrVyOaVDHMoaAuMvAHTs+1nJeBd5byVp2Twc25yZ6SgKHRMmSO s5+g== X-Forwarded-Encrypted: i=1; AJvYcCUP/yJuG2MQo55qvRXzpUlyKIvAtsN1XpKXxaAR4gdpPXTiaCT8b54gPc/FD4PK1U9JAxtHQHynhlq1oQ0=@vger.kernel.org, AJvYcCWNZbLv8vZSiHVs+XVQomsEYBnrDioI+4Id383Db9ooKORQ2MCQwWIxIMsiL+fQ9WO4DRDIb0yBTwhl2w==@vger.kernel.org X-Gm-Message-State: AOJu0Yx6zIUr3AE0wjbiV100TfJ6hnI+MD4eobzsyiwSNMq1Y3abHYI6 U1qvmwFhg13eJeJn3s3FwD4ha+55fk4SLF0ra5njCuVkAt9nwfe2noHh X-Gm-Gg: ASbGnct0fub9Likggb/J7+wDoRlO9nd6liAX6DMcBVv5iENvTXAl8YWtvQc1z7ZB5hX JvunbEakm9YaEZkiKvbuHTZP4Gk3v3gH2y0YIqZaf4Sgm7ZAnctZscCT9TT9METv59FuE8ARa+a 6AoXNtlm7O4rc7eLQuoWuy5H2rKM8JoIl5Heu0mgULAtJ8mSVm/GQJYB6hPcGDvN722ainqA1P5 cI3ZbmDpWYZdRTkpp1CDtgbGeBMenx1SJzw5YD4uc/rByRsHaIeRPQ8hg0T3XFCFvwhWMliVJcg 6CfMDgpj0EjECbpcoHaJsRjFj62ggugPO+dCj8d6AbgVly72BvqZSsLpKLXhzptQWTT7Bfx0rfd RK4Fr5t1hq36818ONpIWGNcJmBOhjgGvONTFcf2LdVPoFEKT9cd6osCIbihr4wc4sa00j X-Google-Smtp-Source: AGHT+IFLVShq7sQke2+sS90z+vGxECzG8DIPcMIPlB0XqE9wZj6ZkLlHMF4FaDTA86AkwLv8/0lA9Q== X-Received: by 2002:a05:6512:63c4:10b0:553:ae47:685f with SMTP id 2adb3069b0e04-55a233b1914mr1997025e87.38.1752762480616; Thu, 17 Jul 2025 07:28:00 -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-55989825fe3sm3022975e87.223.2025.07.17.07.27.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Jul 2025 07:27:59 -0700 (PDT) From: Sabyrzhan Tasbolatov To: hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org Cc: ryabinin.a.a@gmail.com, 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 v3 06/12] kasan/xtensa: call kasan_init_generic in kasan_init Date: Thu, 17 Jul 2025 19:27:26 +0500 Message-Id: <20250717142732.292822-7-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250717142732.292822-1-snovitoll@gmail.com> References: <20250717142732.292822-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 Mon Oct 6 20:59:03 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 372D22F85C9; Thu, 17 Jul 2025 14:28:06 +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=1752762487; cv=none; b=OFhMksDyCCi/gUKUoTv/Q1MkHL/dZxx/okLPrfXrk9NmRjKfIs4gL8qJcbEZaeZWXbhDFgrJG/l3Pq1hAIDuYAJUd4sgl6YLTLtMtUbXMbebFWvtSH4bbI502ECAoG8FEOQAKi+a0R1loP2h8KEZgQpAHXZkZiyvRrlYLYn+3CI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752762487; c=relaxed/simple; bh=iyvyFShSw2tQpFiJjfhyr1CCv5Bxv6uDVr/sKPG3O90=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dQb+I6Au8ojLaJp9RDOfyws3FxMjxFzxbpaf5x0QThejEBpdwbFQQicw+k057e5JuAG/DiSu5e1DoNshRTh42hhBNSj2N31aDKyhM42a+jiAeG+vOoFbHTMSZjCkcNZ0zOEqvKRHxIyTXwa+Xi3Clu17nq8pM15MKb3owFAcXsc= 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=FX1EMAJK; 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="FX1EMAJK" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-555024588a8so978353e87.0; Thu, 17 Jul 2025 07:28:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752762484; x=1753367284; 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=VQlEQnJy2HJRDhHnfkaTRfud2Lma6wEowy/1dG9z9wI=; b=FX1EMAJKpoA2KgntDmsiKmt4ZjauUyuFZp5BNT/RxPe7RTW+gbFDIeEMpc4duP+PIB eq00apycPJCes4v3FZKkwvhIYnE1z2wIHVLB8JSPL2Zzq3fGUb4Z30C+xvFOr80gZj8i yqLUr6uCpwA8Tv0NHMU54D+bmAGjD/K56QTMp3X5961Y6JoQxA2W4POubSz4kops4CcE SgpXvWEKPkMXnMBx33dyKiv5aTzk4kHLrVEexjMveIHDJoqz4xf8h5brx23TZEt9e+q0 ftTsFbIxra7ym9tOxiUG3YuQjYcpusnVFN/u2Hn3v1YvNy2cf7GY8Itku3/jhRwjSmku QUbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752762484; x=1753367284; 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=VQlEQnJy2HJRDhHnfkaTRfud2Lma6wEowy/1dG9z9wI=; b=QZ5TiYzvwBq4QQhySFREpIUZ/rg1DAldGRwoqbE3XM8SqaXnjuClZbYsP53kKc69Ws FdgspPXRz9vpeJCG1Xj9A68k5WyVgtmDJgvMwXsejnk9kWstLQlt3e0NiOcQDCzoKgMy wy44niZz+td/TQh/kFu3GsD8nTwKbxvGbk/ErsTYPGHTmAg+Zx8/XykVQNR3+J/B6v9D kKuvR5T48VSir6tfkBHJ+cCSwgH9i9fgeCgKuedpaZSMGP2bqYD2in0VxXz1W/WJI4oL +Neb79LObwJshwmkpZ2o6hKecaD1iZUwE00dXRkMaiVnhys3whj/64NPknEhyVEzJU02 SpIA== X-Forwarded-Encrypted: i=1; AJvYcCUFaHpVOF6AJw/0f8gaCOWVdYlc3dUDHTHrD4v+VTDxoDycSttaWE73aljnMQWKJaUgZ8PAFh9cjy3YPg==@vger.kernel.org, AJvYcCWry9LSLZo/bzVX7oA2iCasaK2om2Tv8ydblZKHQftHa4ahIw8sJPgWxm0pBTr55B1t9kisP0MNsCJPeOE=@vger.kernel.org X-Gm-Message-State: AOJu0Yw3yqNfmpa1vWTilyZlkXiRwuADJJUeQ2CF2Cy6YDzDa7sCiRl/ MKh28u3S1exE1SZM6v2zar+9IPLGASc5lKc4vHaVjSiWtcybhTPPo1zo X-Gm-Gg: ASbGnctztnfXTNfmg1fbj8n3u0QUXle5Rcd0wxaa+/SDhSe1oQ92RJCcNiqOB+hiQem uQddzNs8X+M8SFZiZZtGk2BwMy9arKHy+FFdvXYtSI8kK2bdSXCaXo+zayW6H/SDKAzaZNF4TfY 14UMUZsa0OOAulJZhPz4O9kmQRdwi2Rj/nYAgmjcjAz68xPO4J2UkgJVBcsqwvwMx6MB0RdBEvU EnGtKD2DGwgr4NeodTjTr//tE8E0qluQe14dT1mcLzFxZlz2eC9BIw0eR3l5d5/k6ZDEYvtyiMP LFrd15i4jiD0ovnhRitKLKTWZsvhPtr76YhXo6K8UDWZaAAdm0fhpjDaQ2vzLxNVtXyasIKxTsS tu7/3K/ZYvRCWbpPBsKXWyySArVG6vmhPNtdfebgKYwF7kE3rkRFDcPtaxQErzDKSUBcF X-Google-Smtp-Source: AGHT+IGXa3L1SWxkZTnlyx1w4BEvo8LnYJCQl11jQhxF60PeWT+4RjpJebmC/Vi8BeBawEBpCpZoXA== X-Received: by 2002:a05:6512:2310:b0:55a:271e:965c with SMTP id 2adb3069b0e04-55a271e97f2mr1332318e87.55.1752762484050; Thu, 17 Jul 2025 07:28:04 -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-55989825fe3sm3022975e87.223.2025.07.17.07.28.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Jul 2025 07:28:02 -0700 (PDT) From: Sabyrzhan Tasbolatov To: hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org Cc: ryabinin.a.a@gmail.com, 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 v3 07/12] kasan/loongarch: select ARCH_DEFER_KASAN and call kasan_init_generic Date: Thu, 17 Jul 2025 19:27:27 +0500 Message-Id: <20250717142732.292822-8-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250717142732.292822-1-snovitoll@gmail.com> References: <20250717142732.292822-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 v3: - Added CONFIG_ARCH_DEFER_KASAN selection to enable proper runtime control --- arch/loongarch/Kconfig | 1 + arch/loongarch/include/asm/kasan.h | 7 ------- arch/loongarch/mm/kasan_init.c | 7 ++----- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig index 4b19f93379a..07130809a35 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..cf8315f9119 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_enabled()) { return (void *)(kasan_early_shadow_page); } else { unsigned long maddr =3D (unsigned long)addr; @@ -298,7 +296,7 @@ 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; + kasan_init_generic(); =20 /* Populate the linear mapping */ for_each_mem_range(i, &pa_start, &pa_end) { @@ -329,5 +327,4 @@ 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"); } --=20 2.34.1 From nobody Mon Oct 6 20:59:03 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 D1F052F94A7; Thu, 17 Jul 2025 14:28:09 +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=1752762491; cv=none; b=XG9+NA4BKEgmeHVv8MlFnTnMg4wjstpXklqoF3J9q1cgUVh+rKus3YtHjeulPgJcply7d2WmfjvvIna7Uqfj/UXfiQAEfZxBPcbc9aAbrQHrD0v3r9TICLFGdkac0zRLB71jhOG73CJ4OO/Mf1RcoPJK7QMTNdicL05XbMBOWwk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752762491; c=relaxed/simple; bh=ni9+MGOPBCWxW978r5Taw8MZty2jgdJNnvPYPhZ7RZo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=CBtt9KVKL89cz0ZgSZj2VgnfEmyP64Zc6fXqR9av/rj8VPOsA8hUhXIeBaiVg4loY13tlSyYrEdk8Z+zel6Kre/INmA3fOCeIQ2ijMWFF/VTTMJjSZGm9VVmRkNAguqCwHBySFePVELEVSnNG6B3ZHovwoX0cfsqGBHQJ3Vpui4= 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=VInyhbSS; 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="VInyhbSS" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-5561c20e2d5so1339485e87.0; Thu, 17 Jul 2025 07:28:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752762488; x=1753367288; 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=FVh/EioNiM2ei5SEPjKOjjcyR398WOKR4A8RtqUhr5I=; b=VInyhbSSa9DKeIvM5XsomcX/WyWLP/H8CKqJd5Nj0gKpXOgsOgQOFPyz/q7/F/I9Ir dM8Mu6CGQLXeoh8QFJ9LFCkS2tzib4m11ztTkkSXZBI9/PR2qTE48mpI97IVkLzpyB3m a7zOgjGXGs0GyCHLpBkWT6atbX/ySmUfnqAqGxgOkISujZ1jOYHrNjPGhecRdudDyLz0 bWIC2mWTKNRc1TzhydPkU6sGMrIg0oFU7foXWY/HWxzGo8mxs+vDtbAQtZNNT6h8y5+N aCcmY7uwIFNq+2x1WwGForpmvLI1mR+D9lnmQ+oXRiymPXrgTKbGb+CrJ+OpZFPr4Rx2 dBDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752762488; x=1753367288; 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=FVh/EioNiM2ei5SEPjKOjjcyR398WOKR4A8RtqUhr5I=; b=QvomjBVktNsScUGmTYgfRqit/MLgl+0l9bJtMow54uyeZaeuPhUMKYdnIFcipzqkNB OqziCkb1w+Llr+U2+MIf/5/0+HLlWO8Gh0h7C59NiwmFvg+SkUGcPgGJSckWaEa+y2Fq K70BD3RsyNSKG8aU+SZWSI146WAuAC1+mlzNZbP8BhzAXvYZU2xIwZaEvOx9Nhn06o/j OyLZ8hK4NigPTJbM7L2oUGqWHPg0GfKyDrKndlxKSjb9/yvvEFK7VOblPXQEvp1nfnQ7 nJKRbYLtqIXu8aVKPGkbMJFzOCjS0wL53bxRqanJoItFBudjYy2VcqkqZCTXiQ2kfCVS Mipw== X-Forwarded-Encrypted: i=1; AJvYcCUcm1W+CaQzPPPzis/9dNOCghGNSjnpc1v1NT+ha8f8ep5sd/ViH0TNWfJntrVQbEG8E7DBcCYCh2G+FA==@vger.kernel.org, AJvYcCVyicv+fIbJt9SHEGJT1TGiHlrumbb8Y5IZeSqJ/J9NjmeWsbtZ90oWPgkuAv2EdJ4iuCBHV4eg9y62P1s=@vger.kernel.org X-Gm-Message-State: AOJu0YwascTNh+NwR575Qf2XKwzj6KI2PVwEHS3YU+kF31Mv8cjdsbA5 k77Ah+kECwisX25yLXKvwlVi81w0BdZKX8QqF3kUG5v4KLIGlkQga7X3 X-Gm-Gg: ASbGncvyh6noTT5O4H0W6Msu7nYoIpNEY9dM9XTCVY5ag8KqSMvB9udM+IBzm44Vlll rPu6B3DgB1XStIjErhvSwQALUmeNZq3EWb4xUnpr1G6B1zdO+tMwAKw6lwi2QTTn+7aOlSEtcCY Aw2A7y2ZlD3X1OWUvsgsOJteztsypPoPI9OSXMp51GUm7ehQ5WMLdQrH1vRcULQ3smlqNRfTr2f JE/UVYhr2E8p4/MRQl5JeQ1o+lerVmkC2kKg/n2gC+aGnGM0IG0QpanVWJwgA5nDcMUHhik+8N/ 8k+Ejt+QQ0miZQUT/pWM+BgZeFGEOOVeX9qV4eoYuaTBvA9joYfBDcHGMte2He6u//PTL7vok9E 2yKBFz5HFtAxdPc9Q8z489UC0CKr/E0MTAvPz9qeGy6NDoITSQakzwxHa85iYgGYsNqjY X-Google-Smtp-Source: AGHT+IGxLJhvaMCe+spMW+LE9A946Qy8DaLWnnJJyiUxPC1zU6fBVPq5lHa93m7Tf0WxYYCemaAtrQ== X-Received: by 2002:a05:6512:611:10b0:553:2e92:2c98 with SMTP id 2adb3069b0e04-55a2339f4b9mr1702111e87.42.1752762487529; Thu, 17 Jul 2025 07:28:07 -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-55989825fe3sm3022975e87.223.2025.07.17.07.28.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Jul 2025 07:28:06 -0700 (PDT) From: Sabyrzhan Tasbolatov To: hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org Cc: ryabinin.a.a@gmail.com, 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 v3 08/12] kasan/um: select ARCH_DEFER_KASAN and call kasan_init_generic Date: Thu, 17 Jul 2025 19:27:28 +0500 Message-Id: <20250717142732.292822-9-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250717142732.292822-1-snovitoll@gmail.com> References: <20250717142732.292822-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. 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. Delete the key kasan_um_is_ready in favor of the unified kasan_enabled() interface. Note that kasan_init_generic has __init macro, which is called by kasan_init() which is not marked with __init in arch/um code. Closes: https://bugzilla.kernel.org/show_bug.cgi?id=3D217049 Signed-off-by: Sabyrzhan Tasbolatov --- Changes in v3: - Added CONFIG_ARCH_DEFER_KASAN selection for proper runtime control --- arch/um/Kconfig | 1 + arch/um/include/asm/kasan.h | 5 ----- arch/um/kernel/mem.c | 4 ++-- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/arch/um/Kconfig b/arch/um/Kconfig index f08e8a7fac9..fd6d78bba52 100644 --- a/arch/um/Kconfig +++ b/arch/um/Kconfig @@ -8,6 +8,7 @@ config UML select ARCH_WANTS_DYNAMIC_TASK_STRUCT select ARCH_HAS_CPU_FINALIZE_INIT select ARCH_HAS_FORTIFY_SOURCE + select ARCH_DEFER_KASAN select ARCH_HAS_GCOV_PROFILE_ALL select ARCH_HAS_KCOV select ARCH_HAS_STRNCPY_FROM_USER 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..058cb70e330 100644 --- a/arch/um/kernel/mem.c +++ b/arch/um/kernel/mem.c @@ -21,9 +21,9 @@ #include #include #include +#include =20 #ifdef CONFIG_KASAN -int kasan_um_is_ready; void kasan_init(void) { /* @@ -32,7 +32,7 @@ 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; + kasan_init_generic(); } =20 static void (*kasan_init_ptr)(void) --=20 2.34.1 From nobody Mon Oct 6 20:59:03 2025 Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) (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 A3D542F94A5; Thu, 17 Jul 2025 14:28:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752762494; cv=none; b=raAPbikr2t1mVTWwKwsz4e3TOqo+4ar80VTcAc5NL2nDe4OSOGJ6YQd06eJIHoBPSOTXtkUeISEVMme5/tSiAqaf+Vqdiqrxe8nzDenRQD0G/HAirKBX2NqJmh0NeKRfCrzWOSs1yropbnP2yFo3P7GuTsuWwzCwm4LhboI1vDM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752762494; c=relaxed/simple; bh=Xk0SjVcNNZnQp2HkpSSqHyE9VWiAO/AKIvYCRFHkldY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=QMASVaeh6PQIB4lF6r/ezRv0Y72kOVtueHL7bBlO69hj8PEWuvBWi8Sar0EALHYbQfapNb9KFEr0BCU1+/MAIyHkvxlawo/iV0XfbgXM/2iLJWJircPbhIkQk29jxXYiZIlWrVKFbq33Iz+S6LaFEdiOrcwtRxEMfNewt/ALCvA= 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+MXLsw4; arc=none smtp.client-ip=209.85.167.54 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+MXLsw4" Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-553b5165cf5so1236721e87.0; Thu, 17 Jul 2025 07:28:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752762491; x=1753367291; 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=a+MXLsw4314P/gl/rCzHa/Wy4ocdsf4ZVrWu2TCcVWvOnZZMTz7RtkjHH4EMjg1Hq0 klqJusf44iBz+Pe6VHrZ4k1wjVdt87DfhWcxpoGG5KxTsiarbG9Al+/CfMMAH4D5Hb+v kbuDk24Uyr9Kyho9L/h8tW3CiCl24Fl3GN98NHNbV9AG79eOkVAuNhc+iUAdjTzGTklh IH7/v8d2WbEtj34gYLhAXEOho31ZhD9vjg+LFO4TisbX3hpOnK05O9gMjVzB7ajtR6WH 7HwBKg2nS/B1diPW0XJtXwkUcjeGOkMKAHtbRpXuOQ9t20Q9OosJ3A/xmjORoFGz2QeT Bwdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752762491; x=1753367291; 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=WqS2G/qrXvR6uSqixfIx4rmaXBv0N1LqrwXSXZB3KkSbqfMJD8hQFD+zrK3YCBj/ej kI+TSUCgYMeTZZMFOeMZ8/MxpELKJIxCnF2pz22SbBVkShKbSsMfXYrGm/T2uQvjQ9e2 izXE0RBYGAMKBfSvR6/nRGcgABgWi5PDPwQlE9q8hPXPuqqYA7BQUESKJdPW+aS2Da0U 2twY3DYCRyhxlQ76G2D8eh/qrPgUSGNBVh4zJhEEF4QZztb2+O0OSzM4kF8ldailBSoX DL8Q4XCt9FcCD5XmGvp5x8T+Lekhk3zO/NSxB5C56KVz0u6rfKWNeZLtRXoQHZ8jKj8K T5/Q== X-Forwarded-Encrypted: i=1; AJvYcCUSt08Q1/BqrVPoVLG2ISWcLyMMoxXKrEF1fiwPf9O1D45C5fYYu7iSkaJ3t4GaWd1jTXTUNKbkmMKzEQ==@vger.kernel.org, AJvYcCXWsQxzhMWDgKVarAb5Xyj0y+JiABTnNTUxl8urBlageQo2zgnzyniQ8cewcGzpmqUuYePAMixYSyxd/jU=@vger.kernel.org X-Gm-Message-State: AOJu0YzM4Qd8GcvWL5J+MVvGcBKD7216oO8I895lEN/sp9NB+gJaJYlq aNwhSgBrIl2wkKXEOHn7QREsivaWsDDwap21RNGtkpmAdXYKce97jehV X-Gm-Gg: ASbGnctfTPRitOMF183NG9cDm/fZdYbndHESirsIOVxQcuEySJmC++Wx+4aO+tGxten bmg/YE0kcE9xsLl2AnmFRl7ouCZXUGOJWgTq6eAKV84hrqRBCWYpHoNTkq/nVz9UfTNbHcfWBCU T2FwXgXl0Pm0bISu0UxM+8OIk3haewwPkDtswwQSOiYTnsDcOUNoPcy6mgWZ+7JX2dSLvhpEKPp SKj2kLlbGpKo2q5lsKvXsyuVIOZyzi6ErpWkBfDkL+vZe3DxFGZgDXqxZdh4Xhoudg1QQ9gCTdR hftRhyP3BI6JB7dAQGqb93qHnbJrCpiCJ/xK7iIvNbbnM2ufuhypd90XBvzKAw7aendmdiJaWVH WQT98dG5G5qObTGDapKTkaFIkuFObZgmV9qkZMa8BnZUtiVLI5PIw5Cml8lWqBRxt5JDv X-Google-Smtp-Source: AGHT+IHDhctOdPCboINtKeXrLTUszqbBiUuSpXqwZ8iJGfUdyizY8inGgvaZnyh7hxTvzKTa8fgC6w== X-Received: by 2002:a05:6512:618:20b0:553:23f9:bb37 with SMTP id 2adb3069b0e04-55a233b2fbemr1641277e87.40.1752762490421; Thu, 17 Jul 2025 07:28:10 -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-55989825fe3sm3022975e87.223.2025.07.17.07.28.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Jul 2025 07:28:09 -0700 (PDT) From: Sabyrzhan Tasbolatov To: hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org Cc: ryabinin.a.a@gmail.com, 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 v3 09/12] kasan/x86: call kasan_init_generic in kasan_init Date: Thu, 17 Jul 2025 19:27:29 +0500 Message-Id: <20250717142732.292822-10-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250717142732.292822-1-snovitoll@gmail.com> References: <20250717142732.292822-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 Mon Oct 6 20:59:03 2025 Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) (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 A894C2FA628; Thu, 17 Jul 2025 14:28:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752762497; cv=none; b=huq1zcBGFeyGCzB+5fHvhQWeAxV4Lj1pBGecWb0FMKr8Kg/trabs/yMlAM1kf837RedgjQJ30dL0CWlWv1El3JvytgcBbz0dlpOxEeoUZZKm9Ui8qNko5s8fpQBDdE0MwfZQDWWzRMam20K1DnR8ET2/JWuIX1XA/jfhuVTBVRw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752762497; c=relaxed/simple; bh=3Cytk+SVwc2NsgWIw0nESWZsARd8iImT7N+vVAOVWLo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=XfrXCAvZOUHNVtzNMLQC9A7nR5IaRck+/8zcM4yE9PMaAeEV0b56fNj5gfMJPu2b4L0oG4kr5uLaU5rPB9dlEqUkvdWdxUQr4O4jJAHbDT3vxmJcrJomJX6Q//1ydo8J8nuyvO9BQSzJ5vKdLqEHczUPmIeDAZrIShk0P2C4hpk= 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=Oobq2/VZ; arc=none smtp.client-ip=209.85.167.46 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="Oobq2/VZ" Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-556373661aaso939192e87.2; Thu, 17 Jul 2025 07:28:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752762494; x=1753367294; 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=xwSPw6gFzDTyOsOkroA5OTCCxXe2CzpjscG8NASBaU4=; b=Oobq2/VZx5oQyi19m75Z9zFI4Ty/iuXHf4UMb9qKZ4HkBe6I0WlrGfBqRU+QCnuOTe ZzW0UOU4ALpAHeQtu8Lq/p8GTN0L0tdHoPiFIIQ2hdDkULHaVZVfRmNlbZyqBFK0JmhN 3ipN+Gtzr05Hu6jHgAZ9kDOCUkTem2HywhE/kTI+RZUD2iLZ1UsGoeIE5wk9nNzYP7mC QKLq9f+7F9kDK8sU3kGNXqv8wqMgGG0PdBgujEGzatas/vHtSbuVRVKnyNbvJDpvzEEX jx8L5ol40GEoqbC0J3INEvmR699yU6AcikK3bJk5da4ek7WwSNkGkza/IxD7L2CkwIvN It7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752762494; x=1753367294; 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=xwSPw6gFzDTyOsOkroA5OTCCxXe2CzpjscG8NASBaU4=; b=lY6nN+OduGuZWK0YtwWc5TUug+fyXt6rSG6z61FqNhzGzZDwpHB+6n8Sge3S790nmM TWDgBwkbnOVlEoitgBwRyVvSxatksRld3d7FcAtkd+4XAXhtAQjEGud8xbLBmYmwcLTQ x0ZMPSXdydoRQmUivPjENVXs7OSC1diI2J+yAt9hADCxZ0lU6x7ZtQSuh+VqvsM91/a8 Lqo37Zi6yDnB7Q00SOBTGYN1sBAEGfa0R+gaDSVyJbGntkV6SHf2NhOHuRPaYG4njml9 IueNF8agDRdk2OHYbAtxXbP+unefReoaiEz/EQt4IrNnMnZgO8gc8ix9LbaA24wrMsRw YQsA== X-Forwarded-Encrypted: i=1; AJvYcCWve3pQKzXY3Z7APFafXJ7i+QPvrDFXxImvGfImEiHTIMfX2spI+LNMEqiKuWf7S4TVLNeFFCv+X76/FIQ=@vger.kernel.org, AJvYcCX/slm0+RIevvdRoA56z6BHR7kJmItB2TPGigClZ30NyC/nmaGSwM9H4QYF0MIVGLD40R6FZkoX4ipt2Q==@vger.kernel.org X-Gm-Message-State: AOJu0YwtSKhCJkuzz7kidprwY/qZGfZtepkZhleKTp0gDeYgt3FP8Jm+ OvDyEk9tpQP4VgHQy7XqiWtafVNBL7sP68N1B38/OCIJzRUQVryy0BDz X-Gm-Gg: ASbGncutWbXmVYbKy4Mmp4JGlN8VTO7m95PS26cyyieqzdtWMtSAhop3PMfF+i/C2K6 SiRDzTOPSp7AHKQcvpJ6eq7C3UY0WcCJ4MLjKMH3jZZS5ksA9zCPj1+d8g3kzFfe+KuV2YBpcdb JelSF6FbE6zsOhaKmDqab1ccU58TPCygA0QbA/NYHC5MyNe9LH1Ayd3px4n4KFJV2r4Mix4i08W G9mNevol2bGl4XMUpxsUJkDTyjBhNXpTATYm/MVZL00gYDLGB4lzbWKevoLAYREUP5rZqfaCULI f41oyZU/lMU4G+vQAfYOirXgibxScxrstWETiLXoNT0ASm4YD6wcVURY8oS7omcpgD8WkVjl5Jo D4XA7HNCK6oBqUacy6KLBjMeWNEA1ZWgOcsnxFpU0xuywXx17zT7UHCRMHqtEG9GCzhEK X-Google-Smtp-Source: AGHT+IFV4/fgUWSLQ9HeTYD1ZNc8U4khjXBXPUvRtZGAA8fcpyT35FlSXgJszoiLVDo7d7offe3D+A== X-Received: by 2002:a05:6512:3710:b0:554:f74b:78c1 with SMTP id 2adb3069b0e04-55a233db3famr2128904e87.43.1752762493542; Thu, 17 Jul 2025 07:28:13 -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-55989825fe3sm3022975e87.223.2025.07.17.07.28.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Jul 2025 07:28:12 -0700 (PDT) From: Sabyrzhan Tasbolatov To: hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org Cc: ryabinin.a.a@gmail.com, 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 v3 10/12] kasan/s390: call kasan_init_generic in kasan_init Date: Thu, 17 Jul 2025 19:27:30 +0500 Message-Id: <20250717142732.292822-11-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250717142732.292822-1-snovitoll@gmail.com> References: <20250717142732.292822-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 Acked-by: Alexander Gordeev --- 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 54cf0923050..7ada1324f6a 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 Mon Oct 6 20:59:03 2025 Received: from mail-lf1-f50.google.com (mail-lf1-f50.google.com [209.85.167.50]) (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 82E492FA631; Thu, 17 Jul 2025 14:28:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752762500; cv=none; b=griWsfNFhdK9QzQOqg+NRoK8ZYd9W3aVtbbRVAEGC5Q/0QEjNhBwe0LVKXzLcFZuoOBKy/AjhMahxWHvZPqlQHsZj8kuZ0BjpWUjXBTqakMSi5il5zowI4KCMQ4VuytgXO8saXP+LhId1YZy7NYUFIpXSq9kFwtP8bGfw44W4B8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752762500; c=relaxed/simple; bh=+oDLrDvMYdcW7Q2MYvDnPqqaPmQC/lb+cp7H6kYc8ws=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TI+w/2/harAWrbA3QNCDMgNVYJQRHrYd1qP/ib+hbhAKHos2tZHxNee2rwCNxaIDoTp0IJLJ3x46KwWreLagOJy8AzVsItfZigKQqb8oW1sHxLoBrEtGEpkA4RZ/rGFLMbIUFH8mVnkgU94wDq44sidD5rtYgYGuob4BJkDuLXI= 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=RWHZq/5L; arc=none smtp.client-ip=209.85.167.50 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="RWHZq/5L" Received: by mail-lf1-f50.google.com with SMTP id 2adb3069b0e04-55a2604ebc1so1000716e87.0; Thu, 17 Jul 2025 07:28:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752762497; x=1753367297; 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=RWHZq/5LK91KhX+dC66G6bwVjrDABu2iScIEOgUtZezIknZHe2vVz9uf9UWUysDRnt h4czaWZEJwbaAvK/qkXJT2ym7Up4MwDKSJ4bnCsxpUOJGseQQrTCpI9Wu8u1N4WOWAw/ 7kQSFDzNRyJzrVEONNbk+KlFGCopHbw41/L8+Dtr4CUG8gGxPbKdklpsCgZAYAjR1SWO LMFcwllVSCEhkvuLuf2myMLKu1l/P7HC4OLFgPWO9BBGIMEA7GzUpDzHAZHFaGqCvcMS OLURXOU4lKME5H0uk8f5nSzLYIBrmbwZOROmpYOlSPvdXS1uSL5i4XP3rAflFbKujb9u GEyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752762497; x=1753367297; 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=cxf/3SCgzJHgraGuNqdg+oEmowXG6isEUF1yUbO69Wb2rSmeCWSsqODJskFv9pfoY/ G4hcGn2R8Dj7w4YoN13/fNy4A3T6bqebUkFv+kUkOzop4UxpFEd0ghlP0+6Hah685hHn kQ5hkIxmI/GBQ5qRFSS33dI/3Eu98xepagbla6oo8QI80C3H+O0FkMcmtLfO3qhB6xwZ QLUiw0W0UNyxjyUAg3CzNdlTAuoPZ0/Fed3W8phrTpHJ2zLQEMzn/XGSi6E5oQU2Vq4X SajfADwf0vEG6L6aUJR2PTIcpfZtQeRLayLu7abYHdFxXE5ci5+Ou8jV/6MHSFyYl2iU G3xw== X-Forwarded-Encrypted: i=1; AJvYcCWfIcW6T3Rq3nIAnR0HoMwfKjEH00QAzC/F35fb0LF03B9nyLYar+RNGpuCNQKZ+ct+m7Xxid+ljwYrWNw=@vger.kernel.org, AJvYcCX9Fw/HrRnxcB3ukN+7OUefNAKOwqwndNEVP6nX1kimwNnE5GgeHUWGuyLwMekGsX/PYvlJD1TgKeKh7g==@vger.kernel.org X-Gm-Message-State: AOJu0YwOzgwtBivjo+2ZHU2hrJawOJbkjhKZYwIGG+aGTQL/OvZ/Bfsg EtqOwE0WxlYpSGw9c95UFeSM8eRhzOnSgeIeUvQFxOrz6o08yLe/FAqf X-Gm-Gg: ASbGncuYRf5Ma+yNEl9N/b34Rc4wDHzFUh0FLJsldXunI37ywZ7rVHBRryi0ETa93PX fYwScWQpGHKScO5PJKqnyAE4T2SFTKUCMIqFkZcKU+Rl7V1Pr0WVL7maSTgDwUnRy9XNKQ7fZI0 g7cwTOcZIdn8BhScnzWrX2GLFjhLJCfRE70cHsyS64syvR/CswDSc3MCNzJVw5X23Li9/8kONCp ztfvpJWt/An+zo9CcqVw2J+gI3m1984J4K4tVwTRRvnTsbM144FG77xeQVDoHNuCHkcdfWPdf9U 2PUkJZBG0+N00e5ui8rpKArjiIa0Jy0E+9Xk83tDz0pisQ9A/wZ6i/Ufwzdv00GLBcjrqsGP0+E RZ8SQgE1DeOYPKL4fY4LmZb9WpiQEPBh/ARLWn947TimhswQgYgAB4Q3CZFhutY6RH/u1 X-Google-Smtp-Source: AGHT+IEO/8eHWJm582VzmdIOAIhCMVFXDa+uycN9FWVanpBus9xWQw/+gRsCzypPbNm9nuGJ8ZjzCw== X-Received: by 2002:a05:6512:33ca:b0:553:37e7:867c with SMTP id 2adb3069b0e04-55a23fb26f9mr2259542e87.50.1752762496407; Thu, 17 Jul 2025 07:28:16 -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-55989825fe3sm3022975e87.223.2025.07.17.07.28.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Jul 2025 07:28:15 -0700 (PDT) From: Sabyrzhan Tasbolatov To: hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org Cc: ryabinin.a.a@gmail.com, 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 v3 11/12] kasan/riscv: call kasan_init_generic in kasan_init Date: Thu, 17 Jul 2025 19:27:31 +0500 Message-Id: <20250717142732.292822-12-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250717142732.292822-1-snovitoll@gmail.com> References: <20250717142732.292822-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 --- 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 From nobody Mon Oct 6 20:59:03 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 BFAA12F85F5; Thu, 17 Jul 2025 14:28:21 +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=1752762503; cv=none; b=dBHDcRqLb4+WhmdgkdlqYXY3oVKxP/iRsSEYLg/n5N/ETl+EHseBJpnFVufJkmGOkunWytzt/Tz27TYeRDO9F6Zgtno36M1Zx07RE+uOeQ5AfRhrI3p0969vgsos9DXfH5Uq1IbQza3NJYvrDWUtcxfu40EJ7mWB5SkOmxJncOM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752762503; c=relaxed/simple; bh=cY9u27QpZRpX/n8Jk/G1ognIu+G5XjwsFl66g/1WeR8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KLjmqkYUAkOVATi+pE6DdJY6ron26558g4bKnTl3OCVIwlZaTte2yoYxnSwFiVdL5u8n09dV28L7BPrkaUWOf4uQCryeeqJwfEa4KyPMJhzZbcCG/S5IFZdSMRzhDYfy198wbipiURT/h78svhVcjdOp7BiFO2B1F64EAWsbWao= 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=jDGFsU6Y; 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="jDGFsU6Y" Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-558f7fda97eso784817e87.2; Thu, 17 Jul 2025 07:28:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752762500; x=1753367300; 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=f7ZdWtvjGwx1QVMejTFRuKlxOMwOJa4SlH8rLzpLr/Q=; b=jDGFsU6YUM/ToJ01sXWAH4q2YjUorq/HA2AszfH+T2FtOlpuaz3vM9/+TRuPmoea6X BtcxEnMgUmuXg7fnw4T0K/ux6hsTlDEgdMD6ZyHrYeYEc5xYLByePKehiPlPriMQD70t HEl3loo0LBGb+xcKqEL3LCDHt9EhJcEypM1FJ28NVDmBLLe68L07hWaQShYD2MbQpPn/ TlHO5hLyDYWLp1JwwGowy908i4L7OGBgE4t6d/rKZxtkeqwI93gV9DcUtpPkfllypC/h d+KR1PXbkkvuSKiS4/TgkN4CO+3OyVKsgI9CKwYlIVjUW56agPk/cb6+yU6+bdDPqaZD i2Ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752762500; x=1753367300; 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=f7ZdWtvjGwx1QVMejTFRuKlxOMwOJa4SlH8rLzpLr/Q=; b=I+TbtO3RGOY47r9Dz7D+euEgplrjQvvsIshmt40A1+yngYehx41BwS3zyXMFrxz9wp 9XW5mdAfU6SIBak7kuCY78XMJlfR8lV6dh6yvhqPk2TsWsIqLeODWmUVwINkmQvlSpmF SxQkznnPf1CNMGrKlOMq1dtBDpsm6Vn1deF1cHHYb45XzaehGd2Scnupx785VSemvkzk FpoNltdMTDV7wYklmwjHq3Mcpo7GRG23/TPH1UjyFchXo9B77MVJcy/JHumdhD8VlKjB EAq5RBRSP279r4468EwrNZPf2AIHiMPHT5qX+iKToZawfyOyAt3fa+bw+ROcg0cb/WZh HNsA== X-Forwarded-Encrypted: i=1; AJvYcCW+MICOtXcToIZ8/ckBgXAVldDj7QaZebn8QUAogbzZ2XRe+8frkMzUd8psvLhv3zT2rKpmxl+Jl/NF4w==@vger.kernel.org, AJvYcCXAm2WhUUZhaNMGO5vPIDEs+AwfrXtUNfOnSSbnWF9KUNiduxjrLkRFVqQiIubtHYabgJ4LsysckrUa83M=@vger.kernel.org X-Gm-Message-State: AOJu0YyDGp6/39dtM8QOyoES1W/aZDoQGfwXKjPtELCaEIP7UkxD8o+X HextCvagQLmSqjtEwgcccbdJ299i0/BQtL546z5mPaQ+zb+n2eua6w8R X-Gm-Gg: ASbGncvKPab5tiyvuwQQsujYaffwlHYxOZqcK6ehTFiPcA6DWLfQFJZGGLxa0HvhjRX YdtrkxsH0UKOjZ7P/jsHzjseCGvuVCbb7mhN162PV2/FjJlg5WfIYRFS/3Fx8jn+07yUzWiaGV0 lwi6FsFwdVScAYDJbXhpBRosVFMqi1nLlZ5CwYLIoQ90FJC+L+FRcbokH8ZTre/rjnpvrEHa7TQ I4MKHC6NcqH46DqWWA24IYNII2pOXJ7QEMWeW4U1yPgZqgUgW7Mau2rop2MB8+2o6E46dfzXO7c hny5RRFzl7QlyB3mmdtyye0XAK77S1I8iiWfOKtzzmac3SuYRWaKv9bB8CA4p1ftKuSYYg2Y6dL U4tfNaayDcx0o3rmpGOdo4CkOewVzG4g67S0rKfmaY/jV07O9FmRpFmjn4xY7qTzViFnf X-Google-Smtp-Source: AGHT+IGCxJLgxZY02tc8foSIT/rHsNNpSknOWUP3l3DGsuRGAuDE+1eyiieQPzZhElaS9ma13LLajg== X-Received: by 2002:a05:6512:2345:b0:558:f7fc:87c4 with SMTP id 2adb3069b0e04-55a23f7fc98mr2461079e87.32.1752762499563; Thu, 17 Jul 2025 07:28:19 -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-55989825fe3sm3022975e87.223.2025.07.17.07.28.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Jul 2025 07:28:18 -0700 (PDT) From: Sabyrzhan Tasbolatov To: hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org Cc: ryabinin.a.a@gmail.com, 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 v3 12/12] kasan: add shadow checks to wrappers and rename kasan_arch_is_ready Date: Thu, 17 Jul 2025 19:27:32 +0500 Message-Id: <20250717142732.292822-13-snovitoll@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250717142732.292822-1-snovitoll@gmail.com> References: <20250717142732.292822-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" This patch completes: 1. Adding kasan_shadow_initialized() checks to existing wrapper functions 2. Replacing kasan_arch_is_ready() calls with kasan_shadow_initialized() 3. Creating wrapper functions for internal functions that need shadow readiness checks 4. Removing the kasan_arch_is_ready() fallback definition The two-level approach is now fully implemented: - kasan_enabled() - controls whether KASAN is enabled at all. (compile-time for most archs) - kasan_shadow_initialized() - tracks shadow memory initialization (static key for ARCH_DEFER_KASAN archs, compile-time for others) This provides complete elimination of kasan_arch_is_ready() calls from KASAN implementation while moving all shadow readiness logic to wrapper functions. Closes: https://bugzilla.kernel.org/show_bug.cgi?id=3D217049 Signed-off-by: Sabyrzhan Tasbolatov --- Changes in v3: - Addresses Andrey's feedback to move shadow checks to wrappers - Rename kasan_arch_is_ready with kasan_shadow_initialized - Added kasan_shadow_initialized() checks to all necessary wrapper functions - Eliminated all remaining kasan_arch_is_ready() usage per reviewer guidance --- include/linux/kasan.h | 36 +++++++++++++++++++++++++++--------- mm/kasan/common.c | 9 +++------ mm/kasan/generic.c | 12 +++--------- mm/kasan/kasan.h | 36 ++++++++++++++++++++++++++---------- mm/kasan/shadow.c | 32 +++++++------------------------- 5 files changed, 66 insertions(+), 59 deletions(-) diff --git a/include/linux/kasan.h b/include/linux/kasan.h index 51a8293d1af..292bd741d8d 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_enabled() && 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_enabled() && 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_enabled() && 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_enabled() && 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_enabled() && kasan_shadow_initialized()) return __kasan_mempool_poison_object(ptr, _RET_IP_); return true; } @@ -568,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 @@ -598,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_enabled() && kasan_shadow_initialized()) return __kasan_unpoison_vmalloc(start, size, flags); return (void *)start; } @@ -607,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_enabled() && kasan_shadow_initialized()) __kasan_poison_vmalloc(start, size); } =20 diff --git a/mm/kasan/common.c b/mm/kasan/common.c index c3a6446404d..b561734767d 100644 --- a/mm/kasan/common.c +++ b/mm/kasan/common.c @@ -259,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); } @@ -267,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); @@ -291,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; @@ -520,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 03b6d322ff6..1d20b925b9d 100644 --- a/mm/kasan/generic.c +++ b/mm/kasan/generic.c @@ -176,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)) @@ -200,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; @@ -506,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; @@ -573,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/kasan.h b/mm/kasan/kasan.h index 129178be5e6..67a0a1095d2 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_enabled() && 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 --=20 2.34.1