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 E6A2AE81E19 for ; Fri, 6 Oct 2023 16:39:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5BD708D00D0; Fri, 6 Oct 2023 12:39:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 546108D00C9; Fri, 6 Oct 2023 12:39:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3E7FA8D00D0; Fri, 6 Oct 2023 12:39:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 2917C8D00C9 for ; Fri, 6 Oct 2023 12:39:42 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id EBD20120317 for ; Fri, 6 Oct 2023 16:39:41 +0000 (UTC) X-FDA: 81315597762.04.1EB7539 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf22.hostedemail.com (Postfix) with ESMTP id 6C8BCC002B for ; Fri, 6 Oct 2023 16:39:39 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=none; spf=pass (imf22.hostedemail.com: domain of cmarinas@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=cmarinas@kernel.org; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=arm.com (policy=none) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1696610379; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references; bh=9YzQCmKvO5tSOSdFz4LvmqIh9CyzLcIKseY+JLRSBqw=; b=t/yzfWLKhLzBLbZZTohzm7Z7iVwk7Kq5hzgcWMBU1WG3FiVPYogpFXZ7J8FnFeYwAGhW8t rWQqVdXwE+XyTyhR6Mo9WmXewnm6RE7uv1EDNdWcCNjEDJ0tn/+D5qNo4WtupUBzinrdZB 5/IGVyTpFl7R5nf7+1o/r4uLkvedzXQ= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=none; spf=pass (imf22.hostedemail.com: domain of cmarinas@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=cmarinas@kernel.org; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=arm.com (policy=none) ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1696610379; a=rsa-sha256; cv=none; b=6IinrW0lwBfOjg6fC0kx7TCgM5VkteFeRyNweObW05a1AxvGnBY3SiAnPkpTQdiiDB5Oja y7OseiNRth5mWWlpWq6T1Awx5BpiZ/qSta2N1l/n0e8/uQaJd19+SBZzef6b3BjeeMEvqa ydTmoWCPMca8Kk+VGHCi+fwX/5TRrDI= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 70CB761173; Fri, 6 Oct 2023 16:39:38 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C7730C433C8; Fri, 6 Oct 2023 16:39:36 +0000 (UTC) From: Catalin Marinas To: linux-mm@kvack.org, Andrew Morton Cc: linux-kernel@vger.kernel.org, Mark Rutland , Vlastimil Babka , Peter Collingbourne Subject: [RESEND PATCH] mm: slab: Do not create kmalloc caches smaller than arch_slab_minalign() Date: Fri, 6 Oct 2023 17:39:34 +0100 Message-Id: <20231006163934.3273940-1-catalin.marinas@arm.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 6C8BCC002B X-Rspam-User: X-Stat-Signature: 6aqptsgq3wbh4po9fza3uzgrr11hr1c4 X-Rspamd-Server: rspam01 X-HE-Tag: 1696610379-166230 X-HE-Meta: U2FsdGVkX19lBIc3/Zu5VRACYqFTDRut4vReo5W4zj7puk2kAHXtAnypk7nqvg0RmKu5KOKZDkHhd5dkKvseKVbCCsA/cfucJzTy24UM76R/mCwAGXxsmmsV2tZT5uXYYVpraZMyRTbF93Kt9ESnmKwauTt+FwQvKSwdscn1YNuzLlXaf5BsNJ/rydNlC8wnv0o9Pb4wZ0aBMf7KqR+JrVI/tGbVw9bSjPP6cYRw4L3X/l+77eQNm420WDQth0+VR9wqd6mzCsXZol2v24EHkuzkUqK+CGejKDXU92RbKbQKqhVUHZA49+wSkVB74tFS91FBbY+NXOIpDQl9VFW9kbood+RXRhr58GL1mNorgJLQ8wsPwTZuCjEufzE7D0lebD3Ec4sl6pinJ+xBzDTTz8vtRIyJXFF28/KyIY4MvZbZ6CubniiDDFNQeTAyqbeZXeVeAhB+k3DkSGkED0gqB8ZglfOHBwpAa2/xodeKFIYp+Ah8N/ZltWUOJ0IoRiEhEcBHHIa2SpfYdoxGCwd7PdCps1Dlmxc5lqhirWR8YagFA07UkktjanfR+AiMqN9ppoRBPVquReiBX9/DbVfP8ZApd6PWOVT1Y6NZBIARBjWo29KNgIeIESZFtGaht/kXe/K/XX7DWWQtncsjUxzxG1Q6Pi0WEGtI5+Z/zq2lUy5xeALx8hjTM+Ki283bF8almevr/n3kEEtvudIgo8QL62L+Q02qbm+gI0gowsNGG3+K+G7T20xMQEv/UOUE2Qh9K0JoVSD+l1PbmVx7MfHk2l8aQ/pc/EMOM90h20YM6uDMisx+vCpIkWQaPzPtMyEgPZDWC4/trZT9jTgKXPxuxMumk/cM2EJ/M8FCNJD4z7zyhI6y6ei64VDvdBGcvgPFzNhkTcX8GRyCatBcEMY3uc+jSQom7HpTFJ6a4COKME8MGDODa3BVF38LhDRyC3cSDc33vIcQzSnyPMjV99I bsTWv5M9 yc3scCsJhf1TfqD8jBT+Q6O4hXck8FIduVxVXdA/kzqgrhKFfNPvANn3UH7UygElxaSDX4+bCmC7I89cJYXoiCvxuPD9Mxn209dSBBoAmeNnxIYUHkEWfqL/pOEWz600eU4L+9OX17KtBGo96eiAwQImolp5A/yEnyk4AtX8VeQg/1sLqfTPfQZBJQc9jNL8aGFiXfTCM5Qd2I9bb1tHQfobkbpffEeSfea7FBgr2ESUgwNdqjkLjh192nUDsk0jnrYSIV7bFyFQzgNs3w13IRBc6ii9bCtapKgX27bMYRpnQnz76N4x73pcJ7GeIKGOpReadZzbXZxCezqzcArjKS25SHSeyxqg/KRg23EBq1Ra/gC/iQpLk19YpFm1MG/b3CKjD8l6LUFqO2Le4GLfFmOeX8IeUQK0jqfE6rCGuYVBUkJnpUne8hksqtJdBqO8KA3pefMaM6T/RwCKVJHPEx7h86G+pQfI5ARR0kMXg+km+BbOmGLMfiI55SrfUNAXw9IXq1iWMROFuzjGrUw4DNrDDugsE2fYSsB7clj05EzpmpJ0= 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: Commit b035f5a6d852 ("mm: slab: reduce the kmalloc() minimum alignment if DMA bouncing possible") allows architectures with non-coherent DMA to define a small ARCH_KMALLOC_MINALIGN (e.g. sizeof(unsigned long long)) and this has been enabled on arm64. With KASAN_HW_TAGS enabled, however, ARCH_SLAB_MINALIGN becomes 16 on arm64 (arch_slab_minalign() dynamically selects it since commit d949a8155d13 ("mm: make minimum slab alignment a runtime property")). This can lead to a situation where kmalloc-8 caches are attempted to be created with a kmem_caches.size aligned to 16. When the cache is mergeable, it can lead to kernel warnings like: sysfs: cannot create duplicate filename '/kernel/slab/:d-0000016' CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.6.0-rc1-00001-gda98843cd306-dirty #5 Hardware name: QEMU QEMU Virtual Machine, BIOS 0.0.0 02/06/2015 Call trace: dump_backtrace+0x90/0xe8 show_stack+0x18/0x24 dump_stack_lvl+0x48/0x60 dump_stack+0x18/0x24 sysfs_warn_dup+0x64/0x80 sysfs_create_dir_ns+0xe8/0x108 kobject_add_internal+0x98/0x264 kobject_init_and_add+0x8c/0xd8 sysfs_slab_add+0x12c/0x248 slab_sysfs_init+0x98/0x14c do_one_initcall+0x6c/0x1b0 kernel_init_freeable+0x1c0/0x288 kernel_init+0x24/0x1e0 ret_from_fork+0x10/0x20 kobject: kobject_add_internal failed for :d-0000016 with -EEXIST, don't try to register things with the same name in the same directory. SLUB: Unable to add boot slab dma-kmalloc-8 to sysfs Limit the __kmalloc_minalign() return value (used to create the kmalloc-* caches) to arch_slab_minalign() so that kmalloc-8 caches are skipped when KASAN_HW_TAGS is enabled (both config and runtime). Fixes: b035f5a6d852 ("mm: slab: reduce the kmalloc() minimum alignment if DMA bouncing possible") Signed-off-by: Catalin Marinas Reported-by: Mark Rutland Cc: Andrew Morton Cc: Vlastimil Babka Cc: Peter Collingbourne Cc: # 6.5.x --- The previous post was messed up by my git send-email configuration, so sending it again. Also cc'ing Vlastimil since he reviewed the previous slab changes for ARCH_KMALLOC_MINALIGN. Thanks. mm/slab_common.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mm/slab_common.c b/mm/slab_common.c index cd71f9581e67..8b45922ed295 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -895,10 +895,13 @@ void __init setup_kmalloc_cache_index_table(void) static unsigned int __kmalloc_minalign(void) { + unsigned int minalign = dma_get_cache_alignment(); + if (IS_ENABLED(CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC) && is_swiotlb_allocated()) - return ARCH_KMALLOC_MINALIGN; - return dma_get_cache_alignment(); + minalign = ARCH_KMALLOC_MINALIGN; + + return ALIGN(minalign, arch_slab_minalign()); } void __init