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 2667CD3E783 for ; Wed, 6 Nov 2024 02:48:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 813E36B009E; Tue, 5 Nov 2024 21:48:16 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7C2D06B00A4; Tue, 5 Nov 2024 21:48:16 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 68A6D6B00A5; Tue, 5 Nov 2024 21:48:16 -0500 (EST) 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 4C5B86B009E for ; Tue, 5 Nov 2024 21:48:16 -0500 (EST) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id DCD5281932 for ; Wed, 6 Nov 2024 02:48:15 +0000 (UTC) X-FDA: 82754135352.15.4EBB2A1 Received: from mail-pg1-f177.google.com (mail-pg1-f177.google.com [209.85.215.177]) by imf05.hostedemail.com (Postfix) with ESMTP id 264EC100023 for ; Wed, 6 Nov 2024 02:47:08 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=l6Kl0MgP; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf05.hostedemail.com: domain of koichiro.den@gmail.com designates 209.85.215.177 as permitted sender) smtp.mailfrom=koichiro.den@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730861169; a=rsa-sha256; cv=none; b=gVmQ+j7MKeTc1EVXQVoNSe4mHuJZKU/Iw6X5hFGvBImteKB85LunCidEOa7z0num0myzwP CQW6w1wiHOyjdVfNW45Ti+10niLllKoQf2CtN6HUiyja9nTD0mdw0yN61oI9CkMic5cQc2 MERBwbIUdpz2ja9CKGvDkMAMPPbsXvE= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=l6Kl0MgP; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf05.hostedemail.com: domain of koichiro.den@gmail.com designates 209.85.215.177 as permitted sender) smtp.mailfrom=koichiro.den@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1730861169; 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=XA4RV3f14XOhxic3OxE/rLOjQ3fBuwIvrwqO+BWPzBQ=; b=CRlaLIpOpq0g3h5+YQHg3OGgAuTyl6f79MUXN+5RNgbizZvFMRr5yL+k+mjjtxGbsdg6PP sAFjyAUiO+ATh9zDNltZ8cmP5GDqU75XzsbrZ8WdBJhzNDngeUCOYckP8mkIH1o2cc5rlX VDYf9YvaONy0HL7DCP2lD85ggXx9II4= Received: by mail-pg1-f177.google.com with SMTP id 41be03b00d2f7-7f3f1849849so899981a12.1 for ; Tue, 05 Nov 2024 18:48:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1730861292; x=1731466092; 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=XA4RV3f14XOhxic3OxE/rLOjQ3fBuwIvrwqO+BWPzBQ=; b=l6Kl0MgP2WeC9gAIfglNxIg863GHgLFKsh8IRiDG1gDx1UBMf5r1bnEas+j88oURCK Zsem1iZEArLCQHS+uUYtwmefbEKYDVeOsm7gdcgCqU9M6Yo0opgWVWpxfIod6ykIPe0H 2RJQDYmXEQmjo41NMgzGr1RGmyBZwUd+2C7i3Lg5hrQgkDJNLU1N+LAPSCgVv/dyGw+R 92rInGU4l2io/rfSPefx60kAB3jnwKl+OS7lpwfDLJGnPvtSZmLlo6/kg8tRasgu2Wa7 w8xOIztwoStSeMR5Pybbx1hxiQ1nEVjipUOSiGaaHPRSOjg9WL0+1lTfsGM/oq7guzYP f13Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730861292; x=1731466092; 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=XA4RV3f14XOhxic3OxE/rLOjQ3fBuwIvrwqO+BWPzBQ=; b=Ovy3uxBIalOOU5OkXUvPS/dODLwmaYophS0R9MM00/VD3vCa3AkzGK8+Jm6v0y95Mf C3RKtvT9rSxYCneWyTsjHs51adXa4owVem1t2KvU9Jt3jUIUZkymqGp3jcwhARfEsmrG u51qbKmptf8DxW1PVyNSBvsy0xzAfdAB5outmeQhUhChSaUC8Qm8SIDb9Gl8SsSmF+rt f6+44vgETRPhhVht9m5aSvt8KNmF7PRtAxhQiup00lYfPSzzDN4mhamvOvzUQ8EH+Cm/ xJXQYTbwmJk0I7KPtQWWEEH7PJI2cmwpijFs9VcySOr4L39tKZ28t0C/GBF0mWcqpdwK TJrQ== X-Forwarded-Encrypted: i=1; AJvYcCV6s9ZU8Dc2eFFTbNQSw7KXwbFgmyceqONy4GX3KE7wjrIS/CIQg0wyBoNqD2Th44rTvJXWUissJw==@kvack.org X-Gm-Message-State: AOJu0Ywz1gsQnj6kiSii0ZeQ18XR35APvHdrJHl7uISUyOMRdPwmuL7h HUwhHymtj0B/jas4+IG/6O0zyToTQJCqqJyDNiT2US+CW3MnZeg/ X-Google-Smtp-Source: AGHT+IEhLwywn62cebsAZxheY2qHgMhbNy5pGIA5Apkn9GUpDIh3N0UWX98b/OFLLVgYI37dnqIfDA== X-Received: by 2002:a05:6a20:3d88:b0:1db:daab:2ae7 with SMTP id adf61e73a8af0-1dbdaab2b0bmr14629245637.19.1730861291582; Tue, 05 Nov 2024 18:48:11 -0800 (PST) Received: from z790sl ([240f:74:7be:1:f95:4edb:e798:4ba9]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-720bc2eb6bcsm10576883b3a.169.2024.11.05.18.48.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Nov 2024 18:48:11 -0800 (PST) Date: Wed, 6 Nov 2024 11:48:06 +0900 From: Koichiro Den To: Vlastimil Babka Cc: Catalin Marinas , 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> <6125f047-7326-49f7-a568-9cabf80f51c7@suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <6125f047-7326-49f7-a568-9cabf80f51c7@suse.cz> X-Rspamd-Queue-Id: 264EC100023 X-Stat-Signature: jkxj867jtnzkkmgaiju4jtewfkg3a8kw X-Rspam-User: X-Rspamd-Server: rspam05 X-HE-Tag: 1730861228-66910 X-HE-Meta: U2FsdGVkX1+f/eIzu0S7wPemXjjy/WLTbG5B4DB2ITrVXo6D80awj+0WozvLpkUKh9nPGIymwdh6ECFc4E+bc7FnthIkko/23Xg3ejCb2bdh4nl/GUQ/Bb43RC+gVH3FitNR9n8Hf1TW72Z7YiLLg5LS+Z8tKOB/FDGG+A7yixSzbh0+0Mn8Qav1juAF1w0Rgxkr8nyp5ZY8cUGpx8T7IEK3z2O4RrsSzmVZ579KwYpF2ZDwpdpYCb7OEnbp4xVvE49oew3eulaHLF0eNZXtYABO2mxA/tR2eaHsscl73ZLZzNUShkaQQDPNljNNe4h6qmFu5lh0i5FE9B2gHucKTEpqMy3IDbkv4rqExwQSqqVAilFTiGKP83/MkDW6ouuennxFGaCvRfn+YScaA9B070o9Mj2Dhp3QpMW4fgeECHIpcl9lPmoLvjmF/fJveNUF3kLRwmEucLdF7kALT/S0XjnAf18/AfVD7+OeWwWcU9V2NrGbMlKECakjWP5JcMbhLSjf2mCyVLaWS8wbR7nciskvX+9GT1RoUhLaJmx7FfEQsHb+z528A3VsZpRZ0tGNkjsBBOPa/67dFwkaKZoEK8cHVq/j1Oxlr2pDouBfxMuOTsyeuLPO8Nmx1x6jX2xBgy8KOep60db30ln5TtiCx73WYUimlMTDFx7gkGDa+RHX0h1Jt41HYKB4mc2fYouQkk9SMb/v3o5BUMY35eSRJ5EZ3YI5phUVuzrI2wAqFUHytcWPTl1BltNd8FXqoMnn7ctrX4gjBm8WIlpFuI3Rq/Q35nc8GOFrBP7k8J6VraKnDJM7SF1DcLxXwvAsOz+7Mj5HqqovtGwO+o0WrRokPFs0uuxxOOcacmFduFs+tfNRXL7Z/Wq3FNGegxvJAozrlxFDwRFtDOpokkW+6Y0aW5xyErLd9ugG34MZ9menXe6rQbGQx2Xose51BIDhe9MIHCZLf/vSioULIH+x6Ma yo328vRI ho9Wn1hQFMEIPYMLJsVhfHB3LmqOgyWmvzJ7sR/JFeZnqohNEMIfT/OxPbHf/jA3MhQSBjG9DRos+qlXgS0xRD23Y0kEeHoyAX9+LhQRYUIazFUJ2qTtUxHqP0/NQRkYUNWAIGJ0GaIYre/xpfaxBjHx4N6/wDDY8ufVzJrC2rVtbADk5tWwlW0GQIT1/zV5uF/w4aK0OcAp5YtvDtRXd6CsGIbiZTwNXW23Hw4LV0h1te0XU/r1ADd7tecspjE4Jz25O4SN7fs2SEXkG8VaCYlvDjgcTSNlph0X/ztOpytUTqYY+ATqxbXLNvybTbEyQDGh/pyCIx5cRivh5xaLLjfEZPbllVRwQQkbP2/blAhPteEsZqqC6mE0KjVjpG49Xsv8G/4pslr2UxYbbIUsD1OZ/OA4qgGY0ouDUMoeC/3Kh18Og8I5dKOvd1wrbZD94XuNTdmJBu2DUe9aHyeAra7S/e+mfWDAmvn5xGqDaoScgjhJmsVPl3JQnWr4gDYnj8xVHOj+3XfmDQHLfIGRhjQwYAx6B0glfdOosAmTuB+CQQdupx3hhFSvI1/Z7vfHXc/aONc8NmUfoiK1MsheUxrf/sbtgBQ8NPxgd X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, 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 05:48:56PM +0100, Vlastimil Babka wrote: > On 11/5/24 03:27, 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. Given this warning was introduced in 6.12, I'm adding it to the > slab/for-6.12-rc7/fixes branch so we fix it before 6.12 is final. > > > @@ -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); > > Note we need to free cache_name always, because kmem_cache_create() does a > kstrdup_const(), so your change would be creating a memory leak. I've fixed > it up locally. > > Vlastimil Ugh, sorry about that. Thanks. > > > + 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); > > >