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 18885D1267E for ; Tue, 5 Nov 2024 10:51:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1B9986B008A; Tue, 5 Nov 2024 05:51:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 143C76B008C; Tue, 5 Nov 2024 05:51:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F25B46B0092; Tue, 5 Nov 2024 05:51:44 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id D155D6B008A for ; Tue, 5 Nov 2024 05:51:44 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 44D11C125F for ; Tue, 5 Nov 2024 10:51:44 +0000 (UTC) X-FDA: 82751724468.06.F9061D8 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf09.hostedemail.com (Postfix) with ESMTP id 94A93140006 for ; Tue, 5 Nov 2024 10:51:19 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=none; spf=pass (imf09.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=1730803719; 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: in-reply-to:in-reply-to:references:references; bh=+ZBgHcTuoAMBvNCZ9pQWTc6BIAnn03NqCqVGEYARB+M=; b=Nh7QB0CeQigLMhnQAHbRSRJ2npU6/ypmSc+DKD2t8WPSuuLua5W2lQmb2qdCGSeT19G0WT KMLP/m16GDIDQfw3CnSAdNIZ2VO/jM1ZvUg91fXBW3p7Ii0v/9agT2frGgeJ5Xx14jgHOD wkV+oou636rYy+jU5veyksPjzQXzwoU= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=none; spf=pass (imf09.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=1730803719; a=rsa-sha256; cv=none; b=mScCPXs2W21FKpL/aJZDfNZasZrr6tLw8A7yikJKRtjImPSYgshJRCFycDpNxqwtVnxmP/ JJ8/IN+P89ENRuwQWjrb1Wb9IoOBDbaamcSBq7SIkzKZ9WYXmPG4finCVnv56BVNs4XM9T B2x9VyD2RNUnQkvrGelRnm9kXZp9jmQ= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id B7C0A5C00A1; Tue, 5 Nov 2024 10:50:56 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C6DABC4CECF; Tue, 5 Nov 2024 10:51:38 +0000 (UTC) Date: Tue, 5 Nov 2024 10:51:36 +0000 From: Catalin Marinas To: Koichiro Den Cc: vbabka@suse.cz, cl@linux.com, penberg@kernel.org, rientjes@google.com, iamjoonsoo.kim@lge.com, akpm@linux-foundation.org, roman.gushchin@linux.dev, 42.hyeyoo@gmail.com, kees@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: Re: [PATCH v2] mm/slab: fix warning caused by duplicate kmem_cache creation in kmem_buckets_create Message-ID: References: <20241105022747.2819151-1-koichiro.den@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241105022747.2819151-1-koichiro.den@gmail.com> X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 94A93140006 X-Stat-Signature: 5rwzr4enyysi51zgpqdtn7j453gozgz7 X-Rspam-User: X-HE-Tag: 1730803879-276099 X-HE-Meta: U2FsdGVkX1/aD8EwRyBIaoHAckRNcI8jO5ORVGdFfaQ7z9fjDGJV3LlpLyX1eoK6jVL5ZQmrjU2OmQ6Lz/rcPvHvcH+6kTLtpObShDqKvbhRIYmQVGO4C4woCP4UQrCweHZMs3IFnQXCF9q/ltoz8KnG80KxHuHI014l3T47l/8PUCuTnuGD7EKbvX4C8Rh/+XzGFZqnN7LVwjb1mhZQWRUskzDu4EgR/XXMbH8wVASS1bFTxW3Qd3IbF02s9l/KxcRdD90E3tt9Ems6fYPmaIHSZy5vhKEdjrR5b+u0I0AmtRXrV8KvzE5cRTkus7KNiTfOAq/odMspntOmM2rCU9Rs6omoiRJvBNiwSBdY6L6iHgxrzWJnSxBvc6u9MwOp2TXQBp6ayXDeKT6WSDE1HRXJcNEoPruJ8gqG8Cz8I0LnDsD00dTdpB0tFaVnAaCN8PHZlsc1QDLzL7tdkb9LB8035cgEIM7kfr3I0/4YECWMts7ZI5UOjPPdoMKmWOEFi9itBB76oetssBTjMD8vMShbhRjudbvLu60VtNZIt51SOu5CbEb47C+LO3z60bmUTPT39l0mAYlOmy8ifPJeMs7mj8Y5rY9Y1pkYE6cjkVyoTH7yl55jzTq9rUVBRMEuQaC+Q8CgBJ7qTaHFz+2b5uQiYcdOoBl5dj0B7UfGHwbgsgRjemBDHkW1zNX7JvcM+THeHZatBKOvzcU4HZHRUrHiOMqOi9cPVdrTosI6gx866cHqXXCyzmJJUTu8f0mBfzO0PJxGVI/cn//nvcBdZyD2xgU2p0UtrtqbTkV0QalPfgXgAPAMmsnlvq3j8obCFi5q/RVCoRXHdSXmI7G+350RaOB66iDhhKXkjq+ukXtPtsbcHEr5Q8Q9B2v+yGMfHiJ0aKwbJrxg/iASn0LVbQRmylvhtP2KX6KKCu4aEFMYUM9A5QwYTB5aMt4reZ3PXchQhsrmujbEOc8M4cv cf3HoK4B upe9yX61iHHbRG5h7d7AB7+HAO9GF4u6jpk1NsvUDJp3OFq0xH3Ksfz1i/IAaIPTcLD4JCuTQp7rjFJfoLqbzq81UiZ5chOtvtPJJiX4X6qrO/DhYn/psY8YvIwCCd0Z1VOMZ7cVyBnqtXsho2lgSXENK+e9IuxFULS//hA9wf4NGxUVRKG76vwnkMINltgRWP854E3oRFfpmpXL8CPnHcbECxc8MGJwyG//lN9SWSZXz4a26B1G6i19xAQhS/Q58mrBSZU/0EZI+j4Sj1LNeWWUlL7etX/ijeAnuiwxVwBgsB1cfl8TvzrfzqFzCuYyLNKC+WfijpxGF28WHQk07nOX80EEjio7XqCXTiSqWTKIfHiFx0rczOhj08H+7i0k7zvqVRcM3ykYep6iG4Fp7tQXtHpsmT4FocvV1NQZS9/GlAZUV2mjAKprAMjZoQCtbVaAnlFZMgoawlqd3/Tw4ewFmw4x9B30lzJZUuyZ84aOuf2cEbI8qAICbof52Oc8al5DBB1PTzS1LR5u7jpq/IxD966IvNDRh4bakqT1ChlcZ+rp6VKCYKjVesA== 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, Nov 05, 2024 at 11:27:47AM +0900, Koichiro Den wrote: > diff --git a/mm/slab_common.c b/mm/slab_common.c > index 3d26c257ed8b..db6ffe53c23e 100644 > --- a/mm/slab_common.c > +++ b/mm/slab_common.c > @@ -380,8 +380,11 @@ kmem_buckets *kmem_buckets_create(const char *name, slab_flags_t flags, > unsigned int usersize, > void (*ctor)(void *)) > { > + unsigned long mask = 0; > + unsigned int idx; > kmem_buckets *b; > - int idx; > + > + BUILD_BUG_ON(ARRAY_SIZE(kmalloc_caches[KMALLOC_NORMAL]) > BITS_PER_LONG); > > /* > * When the separate buckets API is not built in, just return > @@ -403,7 +406,7 @@ kmem_buckets *kmem_buckets_create(const char *name, slab_flags_t flags, > for (idx = 0; idx < ARRAY_SIZE(kmalloc_caches[KMALLOC_NORMAL]); idx++) { > char *short_size, *cache_name; > unsigned int cache_useroffset, cache_usersize; > - unsigned int size; > + unsigned int size, aligned_idx; > > if (!kmalloc_caches[KMALLOC_NORMAL][idx]) > continue; > @@ -416,10 +419,6 @@ kmem_buckets *kmem_buckets_create(const char *name, slab_flags_t flags, > if (WARN_ON(!short_size)) > goto fail; > > - cache_name = kasprintf(GFP_KERNEL, "%s-%s", name, short_size + 1); > - if (WARN_ON(!cache_name)) > - goto fail; > - > if (useroffset >= size) { > cache_useroffset = 0; > cache_usersize = 0; > @@ -427,18 +426,29 @@ kmem_buckets *kmem_buckets_create(const char *name, slab_flags_t flags, > cache_useroffset = useroffset; > cache_usersize = min(size - cache_useroffset, usersize); > } > - (*b)[idx] = kmem_cache_create_usercopy(cache_name, size, > - 0, flags, cache_useroffset, > - cache_usersize, ctor); > - kfree(cache_name); > - if (WARN_ON(!(*b)[idx])) > - goto fail; > + > + aligned_idx = __kmalloc_index(size, false); > + if (!(*b)[aligned_idx]) { > + cache_name = kasprintf(GFP_KERNEL, "%s-%s", name, short_size + 1); > + if (WARN_ON(!cache_name)) > + goto fail; > + (*b)[aligned_idx] = kmem_cache_create_usercopy(cache_name, size, > + 0, flags, cache_useroffset, > + cache_usersize, ctor); > + if (WARN_ON(!(*b)[aligned_idx])) { > + kfree(cache_name); > + goto fail; > + } > + set_bit(aligned_idx, &mask); > + } > + if (idx != aligned_idx) > + (*b)[idx] = (*b)[aligned_idx]; > } It looks fine. This pretty much matches the logic in new_kmalloc_cache() (from commit 963e84b0f262). > return b; > > fail: > - for (idx = 0; idx < ARRAY_SIZE(kmalloc_caches[KMALLOC_NORMAL]); idx++) > + for_each_set_bit(idx, &mask, ARRAY_SIZE(kmalloc_caches[KMALLOC_NORMAL])) > kmem_cache_destroy((*b)[idx]); > kmem_cache_free(kmem_buckets_cache, b); I gave this a try with swiotlb=noforce as well (which pushed the minimum alignment to 64). So: Reviewed-by: Catalin Marinas Tested-by: Catalin Marinas