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 10CE7D1CA0E for ; Tue, 5 Nov 2024 02:13:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6E95D6B0098; Mon, 4 Nov 2024 21:13:09 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 698AF6B0099; Mon, 4 Nov 2024 21:13:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 560D36B009A; Mon, 4 Nov 2024 21:13:09 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 309366B0098 for ; Mon, 4 Nov 2024 21:13:09 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id B0036A022C for ; Tue, 5 Nov 2024 02:13:08 +0000 (UTC) X-FDA: 82750417218.03.BE1DCF1 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) by imf23.hostedemail.com (Postfix) with ESMTP id 9CBB6140004 for ; Tue, 5 Nov 2024 02:12:45 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=k4OiBSIZ; spf=pass (imf23.hostedemail.com: domain of koichiro.den@gmail.com designates 209.85.214.179 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=1730772738; 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:dkim-signature; bh=BbonWoEkQjUXoeGhS5FNHSGOgCb+0Y1PGWMA7bjkDco=; b=PkRsU+37SCgw3bHC50sUMHS0H4cBAOjcXrzFZrfmhAOiYTdmfoLtjNyN4Fjn/zSkIA2UxU WuNwDFX3r5LvTcMYuB5XFlszNdzWn9Utm217uItzsZVG2usrxPlAg4fIgQaTBMWCHB3Br9 +rvcvaajYN6yZ0r+Petrkq2Dt7z798c= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730772738; a=rsa-sha256; cv=none; b=mbW0N8uHGzSTzbB2FfD+l5P/UBktdp/eqIiLPHx5wSnIZSIEeQvDU2bwEIAm9EehXSMJCH 29Olxp2dt4bNebO7DF+RarjM7ORAJkALadx224gnag1Eo16U7G4GcRy98UE5NwpQ6WNfsm E0s+HQagsJnWcTnflYUR+F1kjCG6NKw= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=k4OiBSIZ; spf=pass (imf23.hostedemail.com: domain of koichiro.den@gmail.com designates 209.85.214.179 as permitted sender) smtp.mailfrom=koichiro.den@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-210e5369b7dso49034465ad.3 for ; Mon, 04 Nov 2024 18:13:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1730772785; x=1731377585; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=BbonWoEkQjUXoeGhS5FNHSGOgCb+0Y1PGWMA7bjkDco=; b=k4OiBSIZ1fe30T/kubNPKhnKY4kUTI1Rbyl3LsB+LZLHn/losPqF1HapGDrF3w/djl 97y75Ufw3JBHodPM161QtijaV5gbaobH93whdk0CI6wNso/XwNcIhI6rlwCptPnc/cQa 474EBXLR37Wiw6Hz8lOZEhKYKd4NHZEdwF8empgXnaBDxPCDHopXusQNivKgkFKtoOTN V+6H5OLbM3vgVvwUenXcbgGXvKIscdYL+uoUhLr1MgzODkERFcbiNaw1kLRi+d6p91X2 yrUr/Oob/e2/W5LnJbgQJVpwxkdaa71g5zQYT74LVZXyl+h5ojjRrRYAy7RXXonqrKu0 HfqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730772785; x=1731377585; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=BbonWoEkQjUXoeGhS5FNHSGOgCb+0Y1PGWMA7bjkDco=; b=Cpu0J+IGkeByTrvJAvKFypKESuyrkUikm8CCQvRBMa0S9P5x7NxFmJoEr6dvKfEj0/ Y7zgUMmVroflLFysO4PfVAE++9xiM15hX8OAN6LZl/3CPEW7hYK4CWCdRrTYSIJan2Hs l0S8TPUPWeHSlcXZBjLOaIgMQbnvi05lxrWRes3pcxIiKEoa2yypA2JOs+j1XjsdbAV0 we1quUAAyyGxog36fA5Bowj4bl29an2kJScAWZsDaUcRUzhlMSGo6DXLEtjGC5ctMqli r1cd5WTuto2naI2NDxybLnx1gBUTCewN+wBik4xHJvwa3MX4MpmrxbtZ97DQMzrtoBNP 4S+w== X-Forwarded-Encrypted: i=1; AJvYcCXwz95F3wJ8EXMW9adCC0oOUQliWHZxR7cq4s2Ub/bNQY6O2qkOrPyss67zX8M+0UnD67X1Wbp+qQ==@kvack.org X-Gm-Message-State: AOJu0YwkQD44nQKqD/OeUNi5UsBeJwsQ63ILsy/HDTbskpHrldG4Ay2E RaClV2kXEDoLdHx4KIRYqiPqaZChcZJCJCUooTlUgeUKAsYR3ITW X-Google-Smtp-Source: AGHT+IF7/LGADLtt0xNUhHFZnoBiiDBZukIxqLtPrSpxBH/qGwD1pj0Dt/AcM8Ofd1m1im4WtWPTYA== X-Received: by 2002:a17:902:e741:b0:20b:9c8c:e9f3 with SMTP id d9443c01a7336-2111af2ec06mr202034095ad.14.1730772785405; Mon, 04 Nov 2024 18:13:05 -0800 (PST) Received: from z790sl ([240f:74:7be:1:54ee:9253:695b:4125]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-211056ee3d8sm67800515ad.20.2024.11.04.18.13.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Nov 2024 18:13:04 -0800 (PST) Date: Tue, 5 Nov 2024 11:13:00 +0900 From: Koichiro Den To: Vlastimil Babka , Kees Cook 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, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] mm/slab: fix warning caused by duplicate kmem_cache creation in kmem_buckets_create Message-ID: <6hnhjpvy5ctblzdikw4njmawf5zdtt4ipxdshzqssv7mp55ypn@spekzsjorj4w> References: <20241104150837.2756047-1-koichiro.den@gmail.com> <9e6fd342-ef7f-4648-afa3-bf704c87bf8f@suse.cz> <202411041330.7A0F716E5@keescook> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202411041330.7A0F716E5@keescook> X-Stat-Signature: 8qs5dukd1itshg78wj89gxz98ttdu4dg X-Rspam-User: X-Rspamd-Queue-Id: 9CBB6140004 X-Rspamd-Server: rspam02 X-HE-Tag: 1730772765-477155 X-HE-Meta: U2FsdGVkX1/xxpH7F9oTi2hskfOEVbawEPaShBFPeXjZe/AA8aWVLoVV5fbNOM952059F6sLOAFpji6Wb5+98Os7zerfIIjifCV7+QMUFOV/ABPOE/TqC7mVR/CD2ORdcJ3okFrTvOUE5DhKpnkupktkGnXw+JiHmVDoiTy9pOuimGp5rhvCmYIzhrK8WbR/ceQ8coiukL5CUzLuCR7GXrHIKa/W23UgxzooywWw7bYa+nia6LIW3mf5Z18hc1kPOnxF/5xijCMPP8WMotQHh6lzB3AU/0yIW0coApVbiJzlyoOm8rYgBP3QaAvBO1QnX+bqU6fYjiHtkBztboe46DYzDZZxa1WHGpFC+5b21DLhYGRg5OqO4UdR2FVezpbNOcMlOtfJQPY43NCjwNPWUOD0xiTyyISZb1F9eoUbOozY99eHqr95tksUw2ttNvBhL7xLwKRnVmEHrcwEkrjDcjg9L6nNjHuwGY23Y81alQOlxNRsip1w+HKKEC/2WooVoKYmanRGyXy8fEv2qqFhwQsYII5frPyBGpI3fKlESRt0G39NPDGp/Nqsjq1NCfwnsA01gk268BzYR2q4eFcvJ3288c2JdVcmPUF4KaPxXItWYgZlbajtZcOLf4T3AVhzhqeTlOX5LZCVOIDv9ctjTzbC9XEY6GcTVkOuktM2Z2qPQ8DITB4/s3EVSDlsMnU1dLHxq0uPydFZHQMncyIuDPQh53D/tg2e4qzdRRQ+0BBQ24HYXwW+RWV665+cB+2jAV2Rht3hGMVQhRXU2ZC9VhCuu7WlGALLot+xfCWhzp1lvkdTD7qPAoV7mNwTxrpuPpWMAP2FRd6Jvqh9eLYjdtHojRFDJjIHDomiGKuctmbDDymVjpWrrVIeC4nVH7E3K6W3A2OYr5Jdr9GKuy/1VYZJFdBeHndXKOQOEkHbwTge9nlrxWGXL+EPUnRMhspnt+aa9hbY8T7vT60cGw+ GJyArCpg WPtRxiTmMffpqrz7Z4jiGiErv+ftPH/0d78v11w2YNtZEXuJ/rvy+J2SZNmtbJbvi/XizWy2PXFjgNqBK6fjzsiKYSs2x+ByOMbZoVzUYXjvPr1s7Mr1P+3zt7xM9vPYDcMQ8wtYXU3rqyBlPf8572xqBulEQh0knQfyhKkpVXrwv3Qn7aOopWYzjd1NF+welfm7Gx4bzg710Bvk0nhtZYoXYa0SK9sxpnbRj1IZXCZTTcUdDA2S15j9ltJd30jnhSH+z6u521dT67d4vUbXm27f8nOb7ED8azQg5565Nxbh3qC6C+mbgezsDdaey7Nk9SBhrpB7hNVmqkibFAPVJ1mv+m/fdBKVsF1mZYGgANJEX33TuzXjfHv0Kvmd+RxaEZZ8g+OWRks3v4lzy1lSZc8110J9D3Miv0RHpXHPFJNEirL1znwMWunAqezi8B1nY2H4y5loDujCceG6Vit3CJjbZBoQnCrTWrplI/NZdgxqlSYaWbh9LFCvnwFgqjIfJOR2PIFwrY1C0G1jTtgZTiJEGnPXBHsv9NvA1G+q71paHImP900ywiaXPMx/iF0EcgXxcjupZHFskEtgOyJxvGOCfPP8JTcsVzk8l X-Bogosity: Ham, tests=bogofilter, spamicity=0.000043, 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 Mon, Nov 04, 2024 at 01:32:25PM -0800, Kees Cook wrote: > On Mon, Nov 04, 2024 at 04:40:12PM +0100, Vlastimil Babka wrote: > > On 11/4/24 16:08, Koichiro Den wrote: > > > 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 > > > --- > > > > Thanks for catching this. > > Wonder if we could make this a lot simpler in kmem_buckets_create() by > > starting with the current: > > > > size = kmalloc_caches[KMALLOC_NORMAL][idx]->object_size; > > > > and adding: > > > > aligned_idx = __kmalloc_index(size, false); > > > > now the rest of the loop iteration would work with aligned_idx and if it > > differs from idx, we assign the cache pointer also to idx, etc. > > > > This should avoid duplicating the alignment calculation as we just extract > > from kmalloc_caches[] the result of what new_kmalloc_cache() already did? > > Yeah, I was thinking similar stuff -- the aligned stuff is the alias for > the actual stuff. > > I like the bitmask for tracking the aliases. :) Thanks for reviewing, Vlastimil and Kees. It sounds reasonable, I'll send v2 soon. > > -- > Kees Cook