From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 42431C021B0 for ; Wed, 19 Feb 2025 23:30:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C301E440186; Wed, 19 Feb 2025 18:30:25 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BE051280276; Wed, 19 Feb 2025 18:30:25 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AA807440186; Wed, 19 Feb 2025 18:30:25 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 8AF30280276 for ; Wed, 19 Feb 2025 18:30:25 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 4013E1C7275 for ; Wed, 19 Feb 2025 23:30:25 +0000 (UTC) X-FDA: 83138290410.07.28D0E0F Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) by imf01.hostedemail.com (Postfix) with ESMTP id 15A5A40009 for ; Wed, 19 Feb 2025 23:30:22 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=CEPAmlbR; spf=pass (imf01.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.221.52 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740007823; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=K1GGaSL1EMbBNY4X399BrJn+mN5UB9HBffE2l1nq9Fw=; b=Ku2rslnDVtLjOrgBdewPM351lc4xK8rj6R6XK7Q5jicTJNzG6/PCFvp3dqVY8bWRNqFIsY CNxt4rEGrootjdFlQoJQY+VWIF4D+17Wo/pwpYV7+M9IUeJaagQZm7rbh1pK4VxV9UlXEa JLLUIO1tRggAwZm+jlM51a42yfW3yRs= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=CEPAmlbR; spf=pass (imf01.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.221.52 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740007823; a=rsa-sha256; cv=none; b=8NG675mSVkuxX/BNXIfM+G5IboFeX389SgAPAnO+eNJDqOT4U8eyxt/2AYytSvfe5U4nGt GQ9FFEPAr9VSd6FmiWAOyuJrZhZfuCRYELSK9J58628K9P/RfYKaNcJQtXY4eNXIft1ef7 07fnbiqgvzjoOZPMKA/tRc5JWnQtGdw= Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-38f31f7731fso163901f8f.0 for ; Wed, 19 Feb 2025 15:30:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740007822; x=1740612622; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=K1GGaSL1EMbBNY4X399BrJn+mN5UB9HBffE2l1nq9Fw=; b=CEPAmlbRN0ioM6i8cOD9nNVagdXtR8a1I/RLzBJmhwlq69M33/QPMe4DibYenTlq1P l5znQn8BaCs5rqf0XT4kUN4dfjETkqopXZSlx/KSHr5kBNQtNCf70zn8xsvFQJ1tCELK K/O73xULzoseAvQ9xhDKGUDlgw+bx5F4RJK4txfgy8EoOBSq4J4wla3yXmgzA8aoDO2T /YWm4QV9azIv200IA7hNVwQTyzS/G+H6ggoeUUURMfQIi8HwV5pqg0cIiqgPMCWCNsVM 4KiuiLEtYUiuCbDI1yIgZ1UiWgC9x0sULMj3HTKKgqfhR3IRR4iZzzAWxhvuF6jPoXcW pcSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740007822; x=1740612622; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=K1GGaSL1EMbBNY4X399BrJn+mN5UB9HBffE2l1nq9Fw=; b=gcWLPOQvbMp/DXYoNyai37uM0xDTFgpNVMFaM6zfzyugo2UGa9Ip4B/BlSvfdhU6Ab Fyad9hLYMY0WHkCqxB8JJdRZ09PHuHer7RfVvAms7bfOyGd7AU4Uco3XXPCuyGwNtAtG dghGLZZ1Aczs9bGNZj5a1RWXoahXZ+OhjaRBloywK+4csjoSNUrZ0THF5iPlVJqbKh90 d3Q4V5eqVoF5Y8r0FS7dx88CXO0IGY9dLUWPSbf+h6/x5cxhfcgvrxfG78N00tRY+Yue Qp6hF7EKLoCRPuDln1urxWSMvwPPkgW4Bn1EYttCifYpJD5eUsiPmhecuvFJo/D4NsK+ axXQ== X-Forwarded-Encrypted: i=1; AJvYcCXvsMCwg7Wd/3yUabUWMlMcSf9LI8kyiLQdbYvN+61QDTQwInSK5Amd6RGpan4IqlQhplrs+fRzEA==@kvack.org X-Gm-Message-State: AOJu0YxenrKGXknGzk3VwCNUOF5G4b98zKcwiPUdXR6JsDjB4YiBtg6g eTXivIsOU+sIuhNIEf8pCeccUy2HRsUwZXpFvC9F9j5RHYT0NEG31j2Y29NVSKnSmstF+ENUykZ MtzqiCe2xtp+i6fGauJsxlQeUPTQ= X-Gm-Gg: ASbGncuihi1VOJ32D1ZoieWqXrAEs5WxkEgdQG/J+qSNgHj/m/ZqvVfvSROZO9dg24n Ag9aeavz6nK8BKJ2K9IupweRmRkJQQbiiB5E67/tdfxWKmu2zvlaFxfF7TvD6LaZBSaTB0Orusd M= X-Google-Smtp-Source: AGHT+IFk7eMZYpnIc8kUgdKFr2fq40k19PHjHMj5y4xTuWwCfW66IOFvng6dtc1UANKR7c5qhgSdUJXGtz5TZYpkBcc= X-Received: by 2002:a05:6000:178b:b0:38f:443b:48f4 with SMTP id ffacd0b85a97d-38f587f3d8cmr4457835f8f.49.1740007821516; Wed, 19 Feb 2025 15:30:21 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Andrey Konovalov Date: Thu, 20 Feb 2025 00:30:09 +0100 X-Gm-Features: AWEUYZmNqej25uGq8URgfmDzBpW2RyznVfstivturY56XWT9sQs1qkeZ-eNhhZk Message-ID: Subject: Re: [PATCH v2 02/14] kasan: sw_tags: Check kasan_flag_enabled at runtime To: Maciej Wieczor-Retman Cc: kees@kernel.org, julian.stecklina@cyberus-technology.de, kevinloughlin@google.com, peterz@infradead.org, tglx@linutronix.de, justinstitt@google.com, catalin.marinas@arm.com, wangkefeng.wang@huawei.com, bhe@redhat.com, ryabinin.a.a@gmail.com, kirill.shutemov@linux.intel.com, will@kernel.org, ardb@kernel.org, jason.andryuk@amd.com, dave.hansen@linux.intel.com, pasha.tatashin@soleen.com, ndesaulniers@google.com, guoweikang.kernel@gmail.com, dwmw@amazon.co.uk, mark.rutland@arm.com, broonie@kernel.org, apopple@nvidia.com, bp@alien8.de, rppt@kernel.org, kaleshsingh@google.com, richard.weiyang@gmail.com, luto@kernel.org, glider@google.com, pankaj.gupta@amd.com, pawan.kumar.gupta@linux.intel.com, kuan-ying.lee@canonical.com, tony.luck@intel.com, tj@kernel.org, jgross@suse.com, dvyukov@google.com, baohua@kernel.org, samuel.holland@sifive.com, dennis@kernel.org, akpm@linux-foundation.org, thomas.weissschuh@linutronix.de, surenb@google.com, kbingham@kernel.org, ankita@nvidia.com, nathan@kernel.org, ziy@nvidia.com, xin@zytor.com, rafael.j.wysocki@intel.com, andriy.shevchenko@linux.intel.com, cl@linux.com, jhubbard@nvidia.com, hpa@zytor.com, scott@os.amperecomputing.com, david@redhat.com, jan.kiszka@siemens.com, vincenzo.frascino@arm.com, corbet@lwn.net, maz@kernel.org, mingo@redhat.com, arnd@arndb.de, ytcoode@gmail.com, xur@google.com, morbo@google.com, thiago.bauermann@linaro.org, linux-doc@vger.kernel.org, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, x86@kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 15A5A40009 X-Stat-Signature: gypm8tc744km5s6zwnqropjimgaegdip X-Rspam-User: X-HE-Tag: 1740007822-954783 X-HE-Meta: U2FsdGVkX1+umlA6/1JyvciNG1kZKjsQHMwfoIk/s2V+YN3T4mdNv8T1NOG9KNBvMOLqnfdkiZ8olKaSB5rzEEPzcLdLbzEfcRSXV0IAwBU0IaQk6W0l1Wjnkg5c729y7i2QhkA0sUlGNXC2j2Bi21Fxrcec5iCTj+V9j0AT/7EJ0MvPTTxK8Yb5OadJDIAcwEvEVxLgLHUQd64Qe0g68Y6JhmznJV+7G/Lj8ZHsaXP1l9VO/aDgAdTxdkkyTsgAJ2vSmvUWVOiBdwVR1XK2ATo+5pAXO4mx1TlEkjBzEKh8IMGSt3EBounZiK/qRvVSjfiKxY7ExQDr4RbrAn1+3ObuttQtI4IOgE7Qr9dJEn/18n/NjxsBqJu/k6ieDre4Fna2a18uKKYdvr3SPjcw0aZm2/ja+ImVHY8gGltbU1mZ7C5av03Fs4toN1v5I93PI/5msyYBTX/gVfkDnT1Xn/eA2ez2VdLeG1Ld4lkyEqt4d4SSpLW0h/CVnxgsjQF1XNDehMY/0Cv6IV41Z2Gc0c+HglBUe6V7uYAjbWkMVAKfS6g0MB7uiFJLMiU1J6KvgpQhqhHrehvN+ym7qGsiErLns8/b4vYEumbMIayx2wdRq9BGlgBlROR9MyAPxwMu/Y+CcJK27x5UMnPPCG9eh6MBkE4eqVfWBUWEnLUFGY9M1lr2pDlTlb6iK9CEDWXpz3DUV0nG8rmVmq5/3skzVrW00AXZLJ1iPu/WFo3CXI+iAYIZLxYiqMpW7hz9gDRrhqYX6acJHg9CJX0nSJ4nutMoFBxZauXBFAYAtBIFOVpwEZRsYQoAzHq/ty3+x95jLbYE72kQ2/p9SEkqEn5tYjL7tqJSzuKPvrspUU9YXAV1n6C0CCVKvAf9o1FB5PVvKZvwmLj6UHP3fCky2xnt8+GBzOLWauBRdYQ3I5Zi3A6S0piFvtIkzYPUF5rY4y1qAbzfC3mWxsj0Pr9qKv6 MCyqkPIZ RTUFVemLaPT2F+yrITJw10UttnOBpxyj46GpNh3Rf8c71p5eNxcvdvkGg6Y4REFgYUHS+lB6IDBeCLKk2hGJPGaMk1G0na+tBiwy/+9e6d15XZe2WlAvkKsBaTAxxr0277OFCeu0Z/gpvryAk/WDJEWuzoUB4Unvc2FUwAiG/OpoWh+iM9GWGTryJDATgOA74NzHExKW/ufKb5iMxbM5BABGiprR+VU5AY7Zss+ECwHpSK9LTzijWQIfqortJNsevOFd02OuOK4uaLI7JSWKhRC7nSm8VjzldLzJSN9kPCJOsy7YEQTR5yTpVe5Ykznh4VHEy0u+tUDluZ9J/IpinvVkEinKXYX8lcxkMU0D4McxZ2urH8wFURBHIdLFF37kH51fnAtW/lX7WXZh6+GpYXICYe7AH5hZzp8+VMFYr06d600In6WCkmI9O+Y50ATPmpohFwvrUw6CsWN3VyUKCpPxoQZct3opqir7JIKIB+k2O47NlpAaPYcu9B7A1FNoUI7ihqQHaRsBNowQ3NT/IGJmTF9SSDLj1GgxH X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, Feb 18, 2025 at 9:16=E2=80=AFAM Maciej Wieczor-Retman wrote: > > From: Samuel Holland > > On RISC-V, the ISA extension required to dereference tagged pointers is > optional, and the interface to enable pointer masking requires firmware > support. Therefore, we must detect at runtime if sw_tags is usable on a > given machine. Reuse the logic from hw_tags to dynamically enable KASAN. Is this patch required on x86 as well? If so, I think it makes sense to point it out here. And do the same in messages for other commits that now mention RISC-V. > > This commit makes no functional change to the KASAN_HW_TAGS code path. > > Reviewed-by: Andrey Konovalov > Signed-off-by: Samuel Holland > Signed-off-by: Maciej Wieczor-Retman > --- > include/linux/kasan-enabled.h | 15 +++++---------- > mm/kasan/hw_tags.c | 10 ---------- > mm/kasan/tags.c | 10 ++++++++++ > 3 files changed, 15 insertions(+), 20 deletions(-) > > diff --git a/include/linux/kasan-enabled.h b/include/linux/kasan-enabled.= h > index 6f612d69ea0c..648bda9495b7 100644 > --- a/include/linux/kasan-enabled.h > +++ b/include/linux/kasan-enabled.h > @@ -4,7 +4,7 @@ > > #include > > -#ifdef CONFIG_KASAN_HW_TAGS > +#if defined(CONFIG_KASAN_SW_TAGS) || defined(CONFIG_KASAN_HW_TAGS) > > DECLARE_STATIC_KEY_FALSE(kasan_flag_enabled); > > @@ -13,23 +13,18 @@ static __always_inline bool kasan_enabled(void) > return static_branch_likely(&kasan_flag_enabled); > } > > -static inline bool kasan_hw_tags_enabled(void) > -{ > - return kasan_enabled(); > -} > - > -#else /* CONFIG_KASAN_HW_TAGS */ > +#else /* CONFIG_KASAN_SW_TAGS || CONFIG_KASAN_HW_TAGS */ > > static inline bool kasan_enabled(void) > { > return IS_ENABLED(CONFIG_KASAN); > } > > +#endif /* CONFIG_KASAN_SW_TAGS || CONFIG_KASAN_HW_TAGS */ > + > static inline bool kasan_hw_tags_enabled(void) > { > - return false; > + return IS_ENABLED(CONFIG_KASAN_HW_TAGS) && kasan_enabled(); > } > > -#endif /* CONFIG_KASAN_HW_TAGS */ > - > #endif /* LINUX_KASAN_ENABLED_H */ > diff --git a/mm/kasan/hw_tags.c b/mm/kasan/hw_tags.c > index 9a6927394b54..7f82af13b6a6 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; > > -/* > - * Whether KASAN is enabled at all. > - * The value remains false until KASAN is initialized by kasan_init_hw_t= ags(). > - */ > -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. > @@ -259,9 +252,6 @@ void __init kasan_init_hw_tags(void) > > kasan_init_tags(); > > - /* KASAN is now initialized, enable it. */ > - static_branch_enable(&kasan_flag_enabled); > - > pr_info("KernelAddressSanitizer initialized (hw-tags, mode=3D%s, = vmalloc=3D%s, stacktrace=3D%s)\n", > kasan_mode_info(), > str_on_off(kasan_vmalloc_enabled()), > diff --git a/mm/kasan/tags.c b/mm/kasan/tags.c > index d65d48b85f90..c111d98961ed 100644 > --- a/mm/kasan/tags.c > +++ b/mm/kasan/tags.c > @@ -32,6 +32,13 @@ enum kasan_arg_stacktrace { > > static enum kasan_arg_stacktrace kasan_arg_stacktrace __initdata; > > +/* > + * Whether KASAN is enabled at all. > + * The value remains false until KASAN is initialized by kasan_init_tags= (). > + */ > +DEFINE_STATIC_KEY_FALSE(kasan_flag_enabled); > +EXPORT_SYMBOL(kasan_flag_enabled); > + > /* Whether to collect alloc/free stack traces. */ > DEFINE_STATIC_KEY_TRUE(kasan_flag_stacktrace); > > @@ -92,6 +99,9 @@ void __init kasan_init_tags(void) > if (WARN_ON(!stack_ring.entries)) > static_branch_disable(&kasan_flag_stacktrace); > } > + > + /* KASAN is now initialized, enable it. */ > + static_branch_enable(&kasan_flag_enabled); > } > > static void save_stack_info(struct kmem_cache *cache, void *object, > -- > 2.47.1 >