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 55924C28B30 for ; Thu, 20 Mar 2025 17:48:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0E85A280004; Thu, 20 Mar 2025 13:48:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 072FF280001; Thu, 20 Mar 2025 13:48:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E2D96280004; Thu, 20 Mar 2025 13:48:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id BFCD9280001 for ; Thu, 20 Mar 2025 13:48:12 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 408F71CABCC for ; Thu, 20 Mar 2025 17:48:14 +0000 (UTC) X-FDA: 83242663308.26.3882A23 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) by imf16.hostedemail.com (Postfix) with ESMTP id 4F93E180008 for ; Thu, 20 Mar 2025 17:48:12 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dyHyj+1Q; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf16.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.221.43 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742492892; a=rsa-sha256; cv=none; b=fWL0iZeHlBe8Zb2YGqgGAkBzdCqFBBsPl2IIY7NZte1QehFZZph06aFp8M0F4DRfci3c/c L4GV+aQeFx/gPL+qixPnlIjtQMpd6hgJEO2ucrRQgtJCGAj8n5w8wajajstWehwM+ek6ll rRqwY9DSoBRR55Pz6DRtSXNFt1aZ3Zo= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dyHyj+1Q; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf16.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.221.43 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742492892; 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=dwSKT5FP1BR6N00hLzmPIGh88EZ/x1So/4f2vrksFwI=; b=sUquLJgbwADQJpfSTetoBeDFZ4keZ6wByUq/VcrhIGVfDU+bjmwH10Zr893ZQ1CgSBEK92 zyUb0xP+MQyGLVhWBhlWIg5woY+ZAHPQUbfqkluGu9gm0BPeFgu3X9Jdu5SDE7roafdXo0 SclAv7/Fyv5iXSKgC0EkI3ZARCzgyS0= Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-39129fc51f8so919203f8f.0 for ; Thu, 20 Mar 2025 10:48:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1742492891; x=1743097691; 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=dwSKT5FP1BR6N00hLzmPIGh88EZ/x1So/4f2vrksFwI=; b=dyHyj+1Q1pMP3qpBOQJzoVRG+zJIwHKtTrEbqEw+LDv2QJE5DM8zJhbI+R92W/xcxJ eW3PE/m7JC6TC+PIO2YN86FCtMkk9jvrbaaaS5RJVMENO7lR8dGV4iKMRM7ejXrqsLLK 1TD1llH/nXxXHOuYsg4e3I6wUOGK/igerYZ7zu9mwhPeclBvGQarmOaKr7NMCqqzOnv3 tz9hqPWHQamECvAck4i/DEfOTPXtk6qMUzIxwdL/u5Xjh2g1PS9FPCPvDcNGm4cz2K+R 1P00yzumJ3CHsgXl01E0cCanhxAHU07M9SppYkCDO4V0Mjg7jjFvwFhUHnGOTOHrLyn7 3DJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742492891; x=1743097691; 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=dwSKT5FP1BR6N00hLzmPIGh88EZ/x1So/4f2vrksFwI=; b=EW5ktCJFNc0ocsNSKD9Oh/vXC78K2KpzDSM7xy494wGE1F7lds6Ule3mNNzYeqY3Ul YlqjxYufSgaDeTjlrNfgLqYDlbMtTs5Lp29yFHPcRTm93a5WXXGU9J8h7sni7OBqbF0w LQNpH4QB4EDfzXQWF5KrNgjjAokdxa0771jPWRxNdZ6wfIqvR8Z5/qKkv40rcv1hXPAg xBhdBKS8O4stUHLuMJ9WakRTaS0SYkxS3Onat7frz1EL8yn5/+wTN+1Qdqw7NB8riRvg Qj1pTyfEGAUOXgloMECGBLpwD2PSl21siklN8crVcvrsnnQog1ESZeYKSqIoU8QcBLcD +KKg== X-Forwarded-Encrypted: i=1; AJvYcCV/sPKrAUgK4S1EreHNDEW5EmA5t5Jp93mghTzKykyDccZBlyNfLStWqe7yi+IkeEF90ylj6jMvTw==@kvack.org X-Gm-Message-State: AOJu0YxQh6FbBhIZxeUXv2URMTLTDq30GqNdBxe+7N/Vuz4N5irbrx2X DNVGiGlt+5X0vjwWStl0bT7L32tRFqgJPhuKoGZZAJpXFu31sYH4h8lGmt9wJJPOlgrRpBshlsp 4fHTsoLf+TLHLQmMAJkzlaWYYO4U= X-Gm-Gg: ASbGnctkbAxH6sgX/URaL0E36z5J1dJPt5GS/MJby8YTyEDVBcnMblSu+uKHDeNDcmL lHOig4BKSIRGkjcxjb8Jf102CAqIww7b89+Qjy7b72kkd/4h42ivHr20Mzn3AOY6hFiJluAzrFC sjhXPXGX68SSyfaGRABAVdVXAPyOYaFI9yxSZ2rA== X-Google-Smtp-Source: AGHT+IGY+bH5kQRAbmlh5W5EFC6lZXos4pQiYiEQaNmqvfQYpGa+lCoRdxjQCkMYgzW1X4djrC0Ewfw/7HM2vnOZAAE= X-Received: by 2002:a05:6000:178c:b0:391:47f2:8d90 with SMTP id ffacd0b85a97d-3997f9017e3mr432989f8f.20.1742492890311; Thu, 20 Mar 2025 10:48:10 -0700 (PDT) MIME-Version: 1.0 References: <383482f87ad4f68690021e0cc75df8143b6babe2.1739866028.git.maciej.wieczor-retman@intel.com> In-Reply-To: From: Andrey Konovalov Date: Thu, 20 Mar 2025 18:47:59 +0100 X-Gm-Features: AQ5f1JqHDM1qyWMQ9k-CyIbid1-RFpNXLnQroNsDKT1dsMHC48onaeej4RSJngs Message-ID: Subject: Re: [PATCH v2 09/14] mm: Pcpu chunk address tag reset To: Andrey Ryabinin Cc: Maciej Wieczor-Retman , 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, 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-Stat-Signature: sh71byaiqcicex1mf6aeknqj9izzto9x X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 4F93E180008 X-Rspam-User: X-HE-Tag: 1742492892-146785 X-HE-Meta: U2FsdGVkX1/NB8ENINY1NZ83zb5MvG2XeIAkL06u+oavJ8AtwKHaJpRKznypLia45iEkemYtQQvw1h9MLJUhNfng1O8ejEgbVxiumbaulm/5+qH7eZhrhA2p46ERNkEo4t1PshTeO5hqei1lQ9fUeq3oqyjRgcHS8GtVCerrdsCV+91l6BodVrxc40ZUqP19LOUyI0k1f7ED+BUnP7VZVeHrGpoPmyWZAWux1Q6C2AfdvzdLsWS13+kjJ0z++WsYmNrOaCrwdHmW4RhSfTwVGlhjgVyR+15yUUV0ZXCgkca8YBh1eJZVHcp88AA9q7atljn8cmAIebs3C3wBZIoflEuU0YHa7ZB7yAYZKaoR6S8eHMdIIfGtiXPJjlNKj1mPqa3YDVcL3SMUhHUVB0H6LM1sDDmNwhaxteh2sCVzu51V+bW9VNbLl3IRJB1KoTd96HfNEnz4sTJq5O+PHgBpY0XE8DIJAOAKW5U0s29XIVT2vQN96pjKvEW1ZMJhJhR/Pj1mrdTDTt8SEwLhdlE0+0cDOVY/bUEOcCBsf+8L0BlF+rShHb5rRlpR0taTjqfankW2juhDyX/aN01nzv/fU+RDP0zmXWZ3bmYj5WHJF0RxYI0ngl/U284TD0nmmbb3zwoFAGlR4W06x3+0x4Xd+3LtqWIWzkEfFpDBepwoEDyLJKujyx7p6ryA3K4IfFU5fLCrLg0mLYrP0vCIrh7bAU9pzKSqN7m8KHrkPRLshRe+WnvDz8G77bof8mX6UZq1cxuNB/oOTiIQIW/I2iwaXmW2peGKaX+60mZ1y+G+YI04PjLCbx8EYlKXMjQVE8T7G0JtD9PUbINTMNHBej00JdOvBcVLJBC8tP83k5LyXq2lWxFtd3jWUF52A8gijwXEfmfpqj8wfkGnw9jCgSTxKzRVXJ9xyn2cx5xjOmEMqSwy4W2PWyUjQ70JK3OcYUo5W/qWKh51Ry+QZ1j3SDj Jlm0XJji HDMt8WVbc9/c+LZjm41nNC08giqPHUtjEeR4OMn7xxTXWYYdwSWPW1UI13Z/cCPcKBPYC4EI504Z7bzhvYIv7cBF6g9WPRw7aeL189PgIHcEcW1Is6m6HeMYEURhTzdXPvfa3hG3p6wAZROcdZ05Aj/+/rKEtwtGQhGn2erNNkzPA9U1ZuDoGRGsaX46Yb/iw2RoCcgQTyfQ+K0aKEhkpXtmCXimo6lPcCjs2tiR14DGvRnnBfMva924qXRuIicNUfa+lu2SqG4q+zWWlMHLpd96UNesQx/h6OOgGmWBgmztQ/Gi7AGAmsWeSPLpINeFvJcUMjBzxeJU0zmbfQTxm6034owlla45msQm+AE74Glu03zvmxADv84vCn9rri6LcjjB1rqB8A+LscMoYXJtsmMwDxQOZ/YcFD6XdkQ0/ZDewgpk= 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 Thu, Mar 20, 2025 at 6:40=E2=80=AFPM Andrey Ryabinin wrote: > > On Tue, Feb 18, 2025 at 9:19=E2=80=AFAM Maciej Wieczor-Retman > wrote: > > > > The problem presented here is related to NUMA systems and tag-based > > KASAN mode. Getting to it can be explained in the following points: > > > > 1. A new chunk is created with pcpu_create_chunk() and > > vm_structs are allocated. On systems with one NUMA node only > > one is allocated, but with more NUMA nodes at least a second > > one will be allocated too. > > > > 2. chunk->base_addr is assigned the modified value of > > vms[0]->addr and thus inherits the tag of this allocated > > structure. > > > > 3. In pcpu_alloc() for each possible cpu pcpu_chunk_addr() is > > executed which calculates per cpu pointers that correspond t= o > > the vms structure addresses. The calculations are based on > > adding an offset from a table to chunk->base_addr. > > > > Here the problem presents itself since for addresses based on vms[1] an= d > > up, the tag will be different than the ones based on vms[0] (base_addr)= . > > The tag mismatch happens and an error is reported. > > > > Reset the base_addr tag, since it will disable tag checks for pointers > > derived arithmetically from base_addr that would inherit its tag. > > > > Signed-off-by: Maciej Wieczor-Retman > > --- > > mm/percpu-vm.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/mm/percpu-vm.c b/mm/percpu-vm.c > > index cd69caf6aa8d..e13750d804f7 100644 > > --- a/mm/percpu-vm.c > > +++ b/mm/percpu-vm.c > > @@ -347,7 +347,7 @@ static struct pcpu_chunk *pcpu_create_chunk(gfp_t g= fp) > > } > > > > chunk->data =3D vms; > > - chunk->base_addr =3D vms[0]->addr - pcpu_group_offsets[0]; > > + chunk->base_addr =3D kasan_reset_tag(vms[0]->addr) - pcpu_group= _offsets[0]; > > This looks like a generic tags mode bug. I mean that arm64 is also > affected by this. > I assume it just wasn't noticed before because arm64 with multiple > NUMAs are much less common. > > With this change tag-mode KASAN won't be able to catch bugus accesses > to pcpu areas. > I'm thinking it would be better to fix this on the pcpu_get_vm_areas() > area side by replacing > this > for (area =3D 0; area < nr_vms; area++) > vms[area]->addr =3D kasan_unpoison_vmalloc(vms[area]->addr, > vms[area]->size, > KASAN_VMALLOC_PROT_NORMAL); > > with something like > kasan_unpoison_vmap_areas(vms, nr_vms); > which will unpoison all areas using the same tag. > > Thoughts? Just a side note: KASAN doesn't have proper handling of the percpu areas anyway, I even had to remove a related test; see [1] and [2]. So I think for now we can go with the simplest/consistent solution that prevents false-positives, whichever that solution is. [1] https://bugzilla.kernel.org/show_bug.cgi?id=3D215019 [2] https://bugzilla.kernel.org/show_bug.cgi?id=3D215758