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 C6AB9C83F17 for ; Wed, 23 Jul 2025 17:33:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5D8C76B0167; Wed, 23 Jul 2025 13:33:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 588D66B0168; Wed, 23 Jul 2025 13:33:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 478E76B0169; Wed, 23 Jul 2025 13:33:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 359EF6B0167 for ; Wed, 23 Jul 2025 13:33:22 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 980C480171 for ; Wed, 23 Jul 2025 17:33:21 +0000 (UTC) X-FDA: 83696225802.07.749E9ED Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) by imf27.hostedemail.com (Postfix) with ESMTP id 79B6440008 for ; Wed, 23 Jul 2025 17:33:19 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=R5oTFw98; spf=pass (imf27.hostedemail.com: domain of ryabinin.a.a@gmail.com designates 209.85.167.53 as permitted sender) smtp.mailfrom=ryabinin.a.a@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=1753291999; 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=KBM3XOa1GXkPG7AU5j/kIOwYcdf4HqHkAm2pQZ3zu3U=; b=g3dgCmp1JB7FssHkYwjdFyIknNpmc7RiiWm4Xwlq9iSZbJZuoF7YtPSO1o9mNTvK7tdPLZ 9Z/hvvK5vfuT4GjUia3dGrSqoevME8C+eRqitJyNX8X0V0vhcdduHlJzx/MGhyWrShpxyB XJgKsOyMo9/j7Z5TZWKC6ppdFW43wOE= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=R5oTFw98; spf=pass (imf27.hostedemail.com: domain of ryabinin.a.a@gmail.com designates 209.85.167.53 as permitted sender) smtp.mailfrom=ryabinin.a.a@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1753291999; a=rsa-sha256; cv=none; b=ObwoDz/0zJtDYpHPVvJPa9Xls9Ti5BxwaXVBkXQJlXDu8fv51pGwwSsr6qhd6uRexVM0JE x040LaTNSeOlqvfY/x6izbtJVpdt/E5cr2Y7n6c+0bjlDGMaFUlrKT8NpRj4Vf6aYRkjqi bfCs3q5JQ5ZhEgsQ0xgg+JjAArCHSj8= Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-55a1eced1abso9415e87.3 for ; Wed, 23 Jul 2025 10:33:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1753291998; x=1753896798; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=KBM3XOa1GXkPG7AU5j/kIOwYcdf4HqHkAm2pQZ3zu3U=; b=R5oTFw98ykecPrMiBq2nN9dsDAsCox0VyIrnC3t/uApuDAdLvYDDIabVqKymOtXIn6 7Tihu349HP9lBthaNPUoB10eNbdidIjqg7+rWCuIC3yupech3ZohGDlxC9UMttT+DGB+ keoMWtiB+nnpNQIDB1PB05UQv4IAA/6qeOLQ5dhRKVN6f30/1VD8gDPWvMXsGmboNPIk fqxsFgTjhSGc6FASTQGcYlsm+mBRCvaDQRxBgrPnAeOh9EuA0Ld2RiDO8wGlHp4M7Ssj jP3pXzmLcnRkz3cnnjsUbSu5wel+e7oryM37sWWF95rOjD3kVWlIxxhWNM8pUQuzgIfs O65Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753291998; x=1753896798; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=KBM3XOa1GXkPG7AU5j/kIOwYcdf4HqHkAm2pQZ3zu3U=; b=v5KKO1Lhn+zrUH9M2ZNu1kvhqckWAsK31WgCCM//Mx+HMXlhlKbuGLnuObQjm5GE7r UT1e77iXmG6cKWOBjkcWTZrWc9UK7QF+cr9toFAsYNdFvdHDmxlDv2NlXa0yra5OOXcx C1YLOH0eX/6Qt9pPOBjd9sowuB1QNxsYxJ4a0TnpK2ZENqIu8G8NcTRogsKWREFD8i16 UuLQqrGkLorGaHivb3wKJbwQ1EC79WNcfvs0pFeC/a/Qars1XTdByviJp2Ds2reKKOZE N8sGPKoHa9y8GXoWY7BPv3ZiSdMgLPDOwdZhf0lj6R9kG+AsaEu9BSY05+MI/ojV7lJh Aegw== X-Forwarded-Encrypted: i=1; AJvYcCV2rpbbowrYFchG9J+UyK8lE8aZVHh23x96nhvTMFWKZEwGUjkaUlvwWcnkgfx5+Et82rtjzZ7idQ==@kvack.org X-Gm-Message-State: AOJu0YyFy4xNh+YFIwPbFl+OQmn/sz4vA4UjT6onNAxk1po94JKEgU4S Op0Isa1arzCHpOyXM/K35yU3vraVN8JwEYUX9/7ehRAsJAyU5Td4oI4D X-Gm-Gg: ASbGncvxWYJYkmWuSHRcuTUyu0SasaOO8MVDrCPjYbznGq0IkLihn5m25/Ozyh3XzNp yboQYwlbPobhQn1bORbGzrDRoQQH0l+oUnzKsXME9sQwl1ZDGhqw9vt47MGnd6cIB7a6on3nVBt IK9H7Fi7ltSI8TkEUabyCS053dHMiXWOfHEmnjMRw7+g4tyJ88Rwlv3giGdzvnUSqd6+BKBE+KE d67D5G7UkMsjm7FD61zbAKvC6dxIRBWL7r9zzSpsEnmsqi9P1UWst4Pk5QM9yan/qzWQPDrfWm1 iCVO9hOa+rc8al7aZhAK9GMP/Qc0IRoJVYS+7c4JAtefW+yREAq3LOK7RG/tyd/JZTkhNBEgTEd gc79z+bho7ozpu9WhYlStAQc48d2RMnqeKo6YarU= X-Google-Smtp-Source: AGHT+IEhfKgja72kmMEVu8mg+y0GPA2wBPQGXBF9w7fJkfAZVikcQ8zyKptW1cZk85GIYWtzdxftWQ== X-Received: by 2002:a05:6512:3c8b:b0:553:24b4:6492 with SMTP id 2adb3069b0e04-55a5132157emr458860e87.5.1753291997236; Wed, 23 Jul 2025 10:33:17 -0700 (PDT) Received: from [10.214.35.248] ([80.93.240.68]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-55a31aac980sm2396014e87.74.2025.07.23.10.33.15 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 23 Jul 2025 10:33:16 -0700 (PDT) Message-ID: Date: Wed, 23 Jul 2025 19:32:51 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 00/12] kasan: unify kasan_arch_is_ready() and remove arch-specific implementations To: Sabyrzhan Tasbolatov Cc: hca@linux.ibm.com, christophe.leroy@csgroup.eu, andreyknvl@gmail.com, agordeev@linux.ibm.com, akpm@linux-foundation.org, 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 References: <20250717142732.292822-1-snovitoll@gmail.com> Content-Language: en-US From: Andrey Ryabinin In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Queue-Id: 79B6440008 X-Rspamd-Server: rspam06 X-Stat-Signature: 4zr7cbywp9junh337q4iafnh7txjzoqk X-HE-Tag: 1753291999-288273 X-HE-Meta: U2FsdGVkX1+BLZ4GkZdtJoEuXIPCABe7sBfOJbRhIOZl9jwMXqoA38gGTzvIVZwyR2xhoDMTYXUw180B2OcCjcMjjpEiBeak15H+FIxShgIgiVO61BenbF13mhiYYVhtxvJ8SYzDYiJdZOYnagPEzfULRj+v3A1IiG/zJF+AqnAsMcWSf9+N/qXToru+i7YH1YdPicL0enVjOv9TrKcM2nYu8e8CFOTpLen1DhblQQaZI9KdGaykbIx3qmGyxzZvrBIIQBCuOlfApBNvHLrUNcUM+ao4h3CMsIqVgUS8Siq+m4mOEmi9wS54pMvUORsfWFHIJijXi1qKKCLdT8wLzdj8zEjO4PIGrsoRlmOu3h1IVyM0kPZHWgk0ZIYX2NbpfIRtjDsDiHsQ9oDc5B2qkz7QOqJoIDZnGfG9A9toQE3fFJTHniCiKHwp/uOf/SplsKgpYu4jvkYODwX5Fsw9sfFASoIK+cZg0RsG+eqIN/t7FvAB4nymdI3UfBhLDGEKSuNQbe5f6h2uHJZVVDPeldFBPRvspMNGYPznkxmCNoxTinjSnooCSrIU9AIUieDcM2XWrTxsdmuRS9TSphMbaKC6lm0LtrMh1h9rxhj4Z9THABDjUWwqC2DRQp528vG3mERs/+o2zGFpkHnxVb6zRdMe201Qs7V9rd7s+LypcKZwHFiSpBVBXdG0HTJPR9/cKljCb67ECopIWmV4FxerPeD99Eq9FIZ9zYT7AQD1z3ufhYOL1NksasybKU49cIcWBOYbOLciS9gUCtjubhLNYohWbO8brtewR/HlR/kinaOEUQaStji7NKRf54tHDGVf68U/UC/boo0Fs8taexcZ/DWDhH4/4VrIRrIf9uCLTZhQy18OPPqq+xSgnKPVps7gCTAdsg/FLqQ9e2jonDbyyB4j5u1gBy6qEhYgVnrO3/68J9TSQekOiQ1baqIOBYnTqwNMO0AqAmNueit+86d BFwmIo3C EhEFC4oO3m37TSMMJ7t2e2Cj3UcsSKbMC/yPmjVMnU0BeeTrRDuZYUDeKrtwyWFQpviMb4lSh/XOxhSc35YkSl8LQe+EyjzHWCqGdkh3YyjZlQXb+T7qglwLxz/5NHRe+rA2zCtsx27a4v9GP6iZoNp7FJMPL9X3UMMq5GHpUc+K5c/ugaRFFAtKWQ6XcEGVgVncnIJht3Wg6mwm326Fn4kubG1NwXcbA4tt7aTijtk2exiAgTDghVDBkPbYohkHSJn+U1WRxm5BwYR/IhOOU2cJtXTGwz0lgCFGV4MjezuxAXBZOdrlTrGNRaOoMyss9qaBD9i5R17i+o+ywAmRLQLJQZHfQy16jEfh1nchDsTUnIHdeuItx6EGoaJ0hJl0lhdw3B1kUvanshj6+6L7cyuMImApSqapFDvP9NQi3O+PkG/bIR3HPza6p+SnPO8U1wcmuoWwjRqdrmsp9fgwnnnpctGeMOrRNEhi/FHH+hj6xO1IUBq+gUqv80tZSu5coKo1IW269/BHEYz0w7stItvT6uyLoed/4ZN6rm4WdUBmvRjEMOmv/veMlTg== 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 7/22/25 8:21 PM, Sabyrzhan Tasbolatov wrote: > On Tue, Jul 22, 2025 at 3:59 AM Andrey Ryabinin wrote: >> >> >> >> On 7/17/25 4:27 PM, Sabyrzhan Tasbolatov wrote: >> >>> === Testing with patches >>> >>> Testing in v3: >>> >>> - Compiled every affected arch with no errors: >>> >>> $ make CC=clang LD=ld.lld AR=llvm-ar NM=llvm-nm STRIP=llvm-strip \ >>> OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump READELF=llvm-readelf \ >>> HOSTCC=clang HOSTCXX=clang++ HOSTAR=llvm-ar HOSTLD=ld.lld \ >>> ARCH=$ARCH >>> >>> $ clang --version >>> ClangBuiltLinux clang version 19.1.4 >>> Target: x86_64-unknown-linux-gnu >>> Thread model: posix >>> >>> - make ARCH=um produces the warning during compiling: >>> MODPOST Module.symvers >>> WARNING: modpost: vmlinux: section mismatch in reference: \ >>> kasan_init+0x43 (section: .ltext) -> \ >>> kasan_init_generic (section: .init.text) >>> >>> AFAIU, it's due to the code in arch/um/kernel/mem.c, where kasan_init() >>> is placed in own section ".kasan_init", which calls kasan_init_generic() >>> which is marked with "__init". >>> >>> - Booting via qemu-system- and running KUnit tests: >>> >>> * arm64 (GENERIC, HW_TAGS, SW_TAGS): no regression, same above results. >>> * x86_64 (GENERIC): no regression, no errors >>> >> >> It would be interesting to see whether ARCH_DEFER_KASAN=y arches work. >> These series add static key into __asan_load*()/_store*() which are called >> from everywhere, including the code patching static branches during the switch. >> >> I have suspicion that the code patching static branches during static key switch >> might not be prepared to the fact the current CPU might try to execute this static >> branch in the middle of switch. > > AFAIU, you're referring to this function in mm/kasan/generic.c: > > static __always_inline bool check_region_inline(const void *addr, > > size_t size, bool write, > > unsigned long ret_ip) > { > if (!kasan_shadow_initialized()) > return true; > ... > } > > and particularly, to architectures that selects ARCH_DEFER_KASAN=y, which are > loongarch, powerpc, um. So when these arch try to enable the static key: > > 1. static_branch_enable(&kasan_flag_enabled) called > 2. Kernel patches code - changes jump instructions > 3. Code patching involves memory writes > 4. Memory writes can trigger any KASAN wrapper function > 5. Wrapper calls kasan_shadow_initialized() > 6. kasan_shadow_initialized() calls static_branch_likely(&kasan_flag_enabled) > 7. This reads the static key being patched --- this is the potential issue? > Yes, that's right. > The current runtime check is following in tis v3 patch series: > > #ifdef CONFIG_ARCH_DEFER_KASAN > ... > static __always_inline bool kasan_shadow_initialized(void) > { > return static_branch_likely(&kasan_flag_enabled); > } > ... > #endif > > I wonder, if I should add some protection only for KASAN_GENERIC, > where check_region_inline() is called (or for all KASAN modes?): > > #ifdef CONFIG_ARCH_DEFER_KASAN > ... > static __always_inline bool kasan_shadow_initialized(void) > { > /* Avoid recursion (?) during static key patching */ > if (static_key_count(&kasan_flag_enabled.key) < 0) > return false; > return static_branch_likely(&kasan_flag_enabled); > } > ... > #endif > > Please suggest where the issue is and if I understood the problem. I don't know if it's a real problem or not. I'm just pointing out that we might have tricky use case here and maybe that's a problem, because nobody had such use case in mind. But maybe it's just fine. I think we just need to boot test it, to see if this works. > I might try to run QEMU on powerpc with KUnits to see if I see any logs. powerpc used static key same way before your patches, so powerpc should be fine.