From patchwork Mon Nov 4 15:08:37 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Koichiro Den X-Patchwork-Id: 13861521 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 7931AD132DC for ; Mon, 4 Nov 2024 15:12:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B3DE46B007B; Mon, 4 Nov 2024 10:12:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id AD0DC6B0082; Mon, 4 Nov 2024 10:12:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 967576B0083; Mon, 4 Nov 2024 10:12:52 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 7456E6B007B for ; Mon, 4 Nov 2024 10:12:52 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id DFFDA801E5 for ; Mon, 4 Nov 2024 15:12:51 +0000 (UTC) X-FDA: 82748753724.06.1D9F13B Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) by imf15.hostedemail.com (Postfix) with ESMTP id 67175A003F for ; Mon, 4 Nov 2024 15:12:17 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ADGtyq+E; spf=pass (imf15.hostedemail.com: domain of koichiro.den@gmail.com designates 209.85.214.182 as permitted sender) smtp.mailfrom=koichiro.den@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=1730732949; 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:dkim-signature; bh=EsDhKeizCbh8czq6Zo7/L6Gcau/g9OV1qCvVb2b2Aa0=; b=8TMRghVvnStxASuvKETjQ+M63gKo+p1RCZPb8mF5WXIIEMvqKv21GwBZ+WbW/HP63znEGK FRvJlLXR7AYfFQ3n8X+b6O65TO/fB6sNVANsTg6CGe3aURrMktgLU1LQ+pJbKDSDsyEjEE WCTdOQJ2TLgVfQ8vO5iepL+Ts7kHTBA= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ADGtyq+E; spf=pass (imf15.hostedemail.com: domain of koichiro.den@gmail.com designates 209.85.214.182 as permitted sender) smtp.mailfrom=koichiro.den@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730732949; a=rsa-sha256; cv=none; b=J3Oqs3RUggpV6srSvj/AXnC5MxTE9HGA91KkFa49vFdkAkOrKmSYZK/MLxzqn16bU6WOxd EhxLvs8vEVMZ590owC4xzw9aSP3myuazAFsg0fR/TlMX14Dw97s0vc5IZci1UvL/ziPVn4 t7J6G9cRORY9x5EZjs/wzmuAFXxvYJ4= Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-20cbca51687so41009025ad.1 for ; Mon, 04 Nov 2024 07:12:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1730733169; x=1731337969; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=EsDhKeizCbh8czq6Zo7/L6Gcau/g9OV1qCvVb2b2Aa0=; b=ADGtyq+E32kEMpV8Z9q42Mgh3APOG3K75qFQOizef1Xnl8Kg9QlczlWEmmDLAnAAQh YMf3QYQYxs4RNQIDO3TONLMEr0XyCcOwFPNjcxu1jIPw3TSKGQbrbldiLNDo+pI5wREb VPrXOOwu+KlMaYZ9B9HKuEs+ljGPi95X1FGMaKZOwLluxPc7fCcSjqi86FUc8mDVYLVs PWWvKqKGjXag2eSmpL3nwAefCFBkE8OJPUSznWkMTFhoSuu8wYNJHqR0T+AjOBXX1gky TkpMGr2+5DesNXDgs283TB23S+77xT5BXxw/zotnlfbIuXuAViqJTGxY/Jk1nee9DVWf Hxzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730733169; x=1731337969; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=EsDhKeizCbh8czq6Zo7/L6Gcau/g9OV1qCvVb2b2Aa0=; b=soBh1s3n2dfvvqzetBJodYeSAcnjGiIhSwjgGh/mKbxmyLASXaoY4NTMGOdDZRYLrv VaU8jLIFGXMYtxhYowemAnzBPGtJlacJwPVfEbxmo213GfZgh4EbBJO8zzXemBDBdFWN 50r3N0XQZnVt2wiZDVPUKNJoqdwrIX1sQDUD89MAux8yzReVhiLNJSr/fRfY0Ev5Pmax 8Jg2ZywslCJLA4DZK7znNDkSfTR6fN1EeQenUiN8qLzKx9UXmLI5fmUE5GfY3O4A6w4N 89kCuKnIk5aEneZJI/EqMAtJhUsyCs6AeB2XaJRbm8yS+JIJzPdF1KFGe6pevt4XyP8+ xJ0Q== X-Forwarded-Encrypted: i=1; AJvYcCVA5Llr8Agjj2WnjV6cme1elu+xwgy3LflAGkAoV73kWkeEpZte8invfd1WlMJ3gVVEq0Oobh9EyQ==@kvack.org X-Gm-Message-State: AOJu0YxjdMwQjOou/4d0bCHbOtf2c6JM+/pj9ySHmR+FPqEf+QVc128H oWjtls/uYyZpNckpBM0RBa+U1vd+W/7TNe0FLRKsu+dHvQsV07ft X-Google-Smtp-Source: AGHT+IHO0Y6csBSOm2+izvcly7LZuH8t5FbKjibToAXpCUmAGh9pzMbEGtKoUY9GTmnEsIJdJ3h36A== X-Received: by 2002:a17:902:d4c2:b0:20b:bd8d:427c with SMTP id d9443c01a7336-2111aef288amr178931625ad.23.1730733168579; Mon, 04 Nov 2024 07:12:48 -0800 (PST) Received: from z790sl.. ([240f:74:7be:1:3d77:36dd:b1e9:70a2]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-211056eee7bsm62143955ad.61.2024.11.04.07.12.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Nov 2024 07:12:48 -0800 (PST) From: Koichiro Den To: vbabka@suse.cz Cc: 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, koichiro.den@gmail.com Subject: [PATCH] mm/slab: fix warning caused by duplicate kmem_cache creation in kmem_buckets_create Date: Tue, 5 Nov 2024 00:08:37 +0900 Message-ID: <20241104150837.2756047-1-koichiro.den@gmail.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 67175A003F X-Stat-Signature: pn1kmbjc6op5nhgrcg95gccrwfdd33cm X-Rspam-User: X-HE-Tag: 1730733137-749193 X-HE-Meta: U2FsdGVkX18f8Hm28aGwXivySW1sKqgCQl0YyoY6+oXMFlUYKoHhNRcFkxVS4/nnnMpssd4imo4btnZMEWDV25voq+GgJl7FGpNut9pft+FT8+seo5jsuQhyOvflaj3Hh7dDCJy89z2q38eap/qoiTO2Pfa/kQtHcnYajmfPNSlwJB7s/l6a6HXkCKg5mPd/ctyc/pHGGeS+gRNcG2kie/gEpQ4vxhrBkRNypkOSq/pUvxYuXjuB2U7oUz7AGg1eZT4NOSzbvOQ+4Ocujkxw2Lh0FcOkT9oM1YmqWak8qNXOWLuClxCTURPEhWShCzr8vrpdZBTxGVcZP7cyedxhCmUNKEnFn3A0msQ2iGoTNEy7eUJFjMWHZN9I3UzjpiDSHi1Su9RIzEC5sgbhcJ1kiZIaU8jXj0yxHHeYUFnXl/bwv1w7R2je77SppEucI86nhwSY3vUzG86aMiO7nnSHBJNblxAOKWQVLVoVqsgkEp0tRv6jy/IYb4DajMlHOTAn6IVj3LRciTp9IYYfOCcAzdwyqFDbZqNIezKsNXHV6GbM+OTho3yMOokX0G2LrKh+aj++8MrQoY1CbF5J0wJ1RqK1de36XsBUUOFFcnoPsx9kxrHobgEXfDL01ZSRYWQPkvhnngM+ucMNiEwm6S0rW7sN1LZgRA7bMFO+Y9gFFCGaGHwSLEBudfj1K8fDR8oVtRGDuy/XM+7zyF9yzLZEmpXyjKS+Y5cHq44CPsu6VQgUzEZtyXkdFFLDSHi5l/vJ/0eX8Jrsv26oadTcVSOC00nx9eSvXPPeJgxyKH0VNzu2U7SqvfZb8rW6go4vZ4UMzoupUO0TtYeXjusJGv+IxuaD43SFe5fXzk079QOrfwFddJF7bN6wWTyjKDIiBozazD4wXMd9M76yr8MZ5yGRZr4PXsua+d38Notprs0mFRUQe2k1heE6lxQqBOm9P3fbO9ZTnCLo5IKLV6L1uln d6qX87Of gzkk8m6d9ShwJ5btiwAPCQFD9eCEPm6znlO2qSA7HLYmiJsstZGM2keyrbQRS5M8U888+OKSiP60xsHxrOmVN0uuJwk+UcaH/2BzpU635BmpOkaVJ0dCGWa+GtXTuwroG/7YZwTTvk4ng1Gm9GZo1PiPSbvwfnlbxXD0qJwDrcGyL5mZwRQoZqDLUDnT+IHceyzFePazzpoWx2GpqQJa9czCMRR2W7nUdzDJR+AekjSep00iupCUeYTakxTlfs+7wCamWAEYl+qVRrr+bDhXa+tEka8VWgvQv36Vl1fjEiCkR0JzXXfRGCIZNQ6zETtWOcqWdo34TMmVSHU59rvX3o6piNzcne0DPps23QQ2pyjnK81xGuQBBVrrvjbzRx/lZ7CwlClmuBmqLtucdjFtYqvVjCcg68r9wWCHqKoZ1JEU2zytplpbRIC2TaSaIx0VGZMelse7irMoCu8FLwYk1eje6jmXeQtDWZaNJjp4FeMrZQjYyOMV69lQAKDivOwsxBTWrAV5j7dxgm6GVGh6MyT6lgSTES7jnqnq1QIt+nq9GfevXES6wOHleNA== 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: Commit b035f5a6d852 ("mm: slab: reduce the kmalloc() minimum alignment if DMA bouncing possible") reduced ARCH_KMALLOC_MINALIGN to 8 on arm64. However, with KASAN_HW_TAGS enabled, arch_slab_minalign() becomes 16. This causes kmalloc_caches[*][8] to be aliased to kmalloc_caches[*][16], resulting in kmem_buckets_create() attempting to create a kmem_cache for size 16 twice. This duplication triggers warnings on boot: [ 2.325108] ------------[ cut here ]------------ [ 2.325135] kmem_cache of name 'memdup_user-16' already exists [ 2.325783] WARNING: CPU: 0 PID: 1 at mm/slab_common.c:107 __kmem_cache_create_args+0xb8/0x3b0 [ 2.327957] Modules linked in: [ 2.328550] CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.12.0-rc5mm-unstable-arm64+ #12 [ 2.328683] Hardware name: QEMU QEMU Virtual Machine, BIOS 2024.02-2 03/11/2024 [ 2.328790] pstate: 61000009 (nZCv daif -PAN -UAO -TCO +DIT -SSBS BTYPE=--) [ 2.328911] pc : __kmem_cache_create_args+0xb8/0x3b0 [ 2.328930] lr : __kmem_cache_create_args+0xb8/0x3b0 [ 2.328942] sp : ffff800083d6fc50 [ 2.328961] x29: ffff800083d6fc50 x28: f2ff0000c1674410 x27: ffff8000820b0598 [ 2.329061] x26: 000000007fffffff x25: 0000000000000010 x24: 0000000000002000 [ 2.329101] x23: ffff800083d6fce8 x22: ffff8000832222e8 x21: ffff800083222388 [ 2.329118] x20: f2ff0000c1674410 x19: f5ff0000c16364c0 x18: ffff800083d80030 [ 2.329135] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000 [ 2.329152] x14: 0000000000000000 x13: 0a73747369786520 x12: 79646165726c6120 [ 2.329169] x11: 656820747563205b x10: 2d2d2d2d2d2d2d2d x9 : 0000000000000000 [ 2.329194] x8 : 0000000000000000 x7 : 0000000000000000 x6 : 0000000000000000 [ 2.329210] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000000 [ 2.329226] x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000 [ 2.329291] Call trace: [ 2.329407] __kmem_cache_create_args+0xb8/0x3b0 [ 2.329499] kmem_buckets_create+0xfc/0x320 [ 2.329526] init_user_buckets+0x34/0x78 [ 2.329540] do_one_initcall+0x64/0x3c8 [ 2.329550] kernel_init_freeable+0x26c/0x578 [ 2.329562] kernel_init+0x3c/0x258 [ 2.329574] ret_from_fork+0x10/0x20 [ 2.329698] ---[ end trace 0000000000000000 ]--- [ 2.403704] ------------[ cut here ]------------ [ 2.404716] kmem_cache of name 'msg_msg-16' already exists [ 2.404801] WARNING: CPU: 2 PID: 1 at mm/slab_common.c:107 __kmem_cache_create_args+0xb8/0x3b0 [ 2.404842] Modules linked in: [ 2.404971] CPU: 2 UID: 0 PID: 1 Comm: swapper/0 Tainted: G W 6.12.0-rc5mm-unstable-arm64+ #12 [ 2.405026] Tainted: [W]=WARN [ 2.405043] Hardware name: QEMU QEMU Virtual Machine, BIOS 2024.02-2 03/11/2024 [ 2.405057] pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 2.405079] pc : __kmem_cache_create_args+0xb8/0x3b0 [ 2.405100] lr : __kmem_cache_create_args+0xb8/0x3b0 [ 2.405111] sp : ffff800083d6fc50 [ 2.405115] x29: ffff800083d6fc50 x28: fbff0000c1674410 x27: ffff8000820b0598 [ 2.405135] x26: 000000000000ffd0 x25: 0000000000000010 x24: 0000000000006000 [ 2.405153] x23: ffff800083d6fce8 x22: ffff8000832222e8 x21: ffff800083222388 [ 2.405169] x20: fbff0000c1674410 x19: fdff0000c163d6c0 x18: ffff800083d80030 [ 2.405185] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000 [ 2.405201] x14: 0000000000000000 x13: 0a73747369786520 x12: 79646165726c6120 [ 2.405217] x11: 656820747563205b x10: 2d2d2d2d2d2d2d2d x9 : 0000000000000000 [ 2.405233] x8 : 0000000000000000 x7 : 0000000000000000 x6 : 0000000000000000 [ 2.405248] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000000 [ 2.405271] x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000 [ 2.405287] Call trace: [ 2.405293] __kmem_cache_create_args+0xb8/0x3b0 [ 2.405305] kmem_buckets_create+0xfc/0x320 [ 2.405315] init_msg_buckets+0x34/0x78 [ 2.405326] do_one_initcall+0x64/0x3c8 [ 2.405337] kernel_init_freeable+0x26c/0x578 [ 2.405348] kernel_init+0x3c/0x258 [ 2.405360] ret_from_fork+0x10/0x20 [ 2.405370] ---[ end trace 0000000000000000 ]--- To address this, alias kmem_cache for sizes smaller than min alignment to the aligned sized kmem_cache, as done with the default system kmalloc bucket. Cc: # 6.11.x Fixes: b32801d1255b ("mm/slab: Introduce kmem_buckets_create() and family") Signed-off-by: Koichiro Den --- mm/slab_common.c | 102 ++++++++++++++++++++++++++++------------------- 1 file changed, 62 insertions(+), 40 deletions(-) diff --git a/mm/slab_common.c b/mm/slab_common.c index 3d26c257ed8b..64140561dd0e 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -354,6 +354,38 @@ struct kmem_cache *__kmem_cache_create_args(const char *name, } EXPORT_SYMBOL(__kmem_cache_create_args); +static unsigned int __kmalloc_minalign(void) +{ + unsigned int minalign = dma_get_cache_alignment(); + + if (IS_ENABLED(CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC) && + is_swiotlb_allocated()) + minalign = ARCH_KMALLOC_MINALIGN; + + return max(minalign, arch_slab_minalign()); +} + +static unsigned int __kmalloc_aligned_size(unsigned int idx) +{ + unsigned int aligned_size = kmalloc_info[idx].size; + unsigned int minalign = __kmalloc_minalign(); + + if (minalign > ARCH_KMALLOC_MINALIGN) + aligned_size = ALIGN(aligned_size, minalign); + + return aligned_size; +} + +static unsigned int __kmalloc_aligned_idx(unsigned int idx) +{ + unsigned int minalign = __kmalloc_minalign(); + + if (minalign > ARCH_KMALLOC_MINALIGN) + return __kmalloc_index(__kmalloc_aligned_size(idx), false); + + return idx; +} + static struct kmem_cache *kmem_buckets_cache __ro_after_init; /** @@ -381,7 +413,10 @@ kmem_buckets *kmem_buckets_create(const char *name, slab_flags_t flags, void (*ctor)(void *)) { kmem_buckets *b; - int idx; + unsigned int idx; + unsigned long mask = 0; + + BUILD_BUG_ON(ARRAY_SIZE(kmalloc_caches[KMALLOC_NORMAL]) > BITS_PER_LONG); /* * When the separate buckets API is not built in, just return @@ -402,43 +437,47 @@ 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 aligned_size = __kmalloc_aligned_size(idx); + unsigned int aligned_idx = __kmalloc_aligned_idx(idx); unsigned int cache_useroffset, cache_usersize; - unsigned int size; + /* this might be an aliased kmem_cache */ if (!kmalloc_caches[KMALLOC_NORMAL][idx]) continue; - size = kmalloc_caches[KMALLOC_NORMAL][idx]->object_size; - if (!size) - continue; - short_size = strchr(kmalloc_caches[KMALLOC_NORMAL][idx]->name, '-'); 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) { + if (useroffset >= aligned_size) { cache_useroffset = 0; cache_usersize = 0; } else { cache_useroffset = useroffset; - cache_usersize = min(size - cache_useroffset, usersize); + cache_usersize = min(aligned_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; + + 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, aligned_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]; } 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); @@ -871,24 +910,12 @@ 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()) - minalign = ARCH_KMALLOC_MINALIGN; - - return max(minalign, arch_slab_minalign()); -} - static void __init -new_kmalloc_cache(int idx, enum kmalloc_cache_type type) +new_kmalloc_cache(unsigned int idx, enum kmalloc_cache_type type) { slab_flags_t flags = 0; - unsigned int minalign = __kmalloc_minalign(); - unsigned int aligned_size = kmalloc_info[idx].size; - int aligned_idx = idx; + unsigned int aligned_size = __kmalloc_aligned_size(idx); + unsigned int aligned_idx = __kmalloc_aligned_idx(idx); if ((KMALLOC_RECLAIM != KMALLOC_NORMAL) && (type == KMALLOC_RECLAIM)) { flags |= SLAB_RECLAIM_ACCOUNT; @@ -914,11 +941,6 @@ new_kmalloc_cache(int idx, enum kmalloc_cache_type type) if (IS_ENABLED(CONFIG_MEMCG) && (type == KMALLOC_NORMAL)) flags |= SLAB_NO_MERGE; - if (minalign > ARCH_KMALLOC_MINALIGN) { - aligned_size = ALIGN(aligned_size, minalign); - aligned_idx = __kmalloc_index(aligned_size, false); - } - if (!kmalloc_caches[type][aligned_idx]) kmalloc_caches[type][aligned_idx] = create_kmalloc_cache( kmalloc_info[aligned_idx].name[type], @@ -934,7 +956,7 @@ new_kmalloc_cache(int idx, enum kmalloc_cache_type type) */ void __init create_kmalloc_caches(void) { - int i; + unsigned int i; enum kmalloc_cache_type type; /*