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 D885FC8303C for ; Fri, 11 Jul 2025 11:12:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 60E0C6B00A4; Fri, 11 Jul 2025 07:12:11 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5E5C46B00A5; Fri, 11 Jul 2025 07:12:11 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 522876B00A6; Fri, 11 Jul 2025 07:12:11 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 436316B00A4 for ; Fri, 11 Jul 2025 07:12:11 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id C0041140671 for ; Fri, 11 Jul 2025 11:12:10 +0000 (UTC) X-FDA: 83651719620.09.8EB2619 Received: from out-177.mta1.migadu.com (out-177.mta1.migadu.com [95.215.58.177]) by imf09.hostedemail.com (Postfix) with ESMTP id C51A6140006 for ; Fri, 11 Jul 2025 11:12:08 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=DLkvah+C; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf09.hostedemail.com: domain of kent.overstreet@linux.dev designates 95.215.58.177 as permitted sender) smtp.mailfrom=kent.overstreet@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752232329; 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=hmvwVX29UC54z92FzAiIHfQJoLjVbikCZHEZdUt1Xvc=; b=fZ1Q7ku98EwkSJPt1mZXECygL2pkzKYbwwxMRYpVDJhuVXYubkf4ANjwlSCe6z92mbj9H5 5IZcjShL/6Tz3/mLihHsESPVt7XCAmDvDJ5vSqUh1zLEAS6R1nVGqZJx+yCfGYdp2OHOpp 3Xb1DnhbIUL/XgMgaNearW9UBnYC7u4= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752232329; a=rsa-sha256; cv=none; b=U18IJP9Zo5h/xOdklDZXKeTzbidubfEJ0p0eFWw5L2xTTy//ySl6kBQmFGixnBAwD2WUEV zbpGDdSVnWVJu63prHvfkAj/3xDZ12t6b5g9yhyI8W14xwEXsCqtXs67V5VWD54V/PDzB8 K6v//VpK/WQEjBu1WFqOziNdOBYHlxk= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=DLkvah+C; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf09.hostedemail.com: domain of kent.overstreet@linux.dev designates 95.215.58.177 as permitted sender) smtp.mailfrom=kent.overstreet@linux.dev Date: Fri, 11 Jul 2025 07:11:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1752232326; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=hmvwVX29UC54z92FzAiIHfQJoLjVbikCZHEZdUt1Xvc=; b=DLkvah+Ci1VSJWI4/B4C7WOGb5TdMdc9dSeZ9dK00ZecpACf0ZdEUCsqcGwjBYJHYjIaoZ KEXe5G1id1Mo7NIyyIBpd/+vk1z25JzlHziVBL6phT9ji3SwNxXBtBcKCx6lnkPXEGAu3q 2XwN2jD7fl3/bU8/nzOqQrS3+Gn1n+w= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Kent Overstreet To: Harry Yoo Cc: Vitaly Wool , linux-mm@kvack.org, akpm@linux-foundation.org, linux-kernel@vger.kernel.org, Uladzislau Rezki , Danilo Krummrich , Alice Ryhl , Vlastimil Babka , rust-for-linux@vger.kernel.org, Lorenzo Stoakes , "Liam R . Howlett" , linux-bcachefs@vger.kernel.org, bpf@vger.kernel.org, Herbert Xu , Jann Horn , Pedro Falcato Subject: Re: [PATCH v12 2/4] mm/slub: allow to set node and align in k[v]realloc Message-ID: <2hiakuk5r3daujixvriejrc3nfqo4oiwmdygvyoxprsec3p6wv@k5i6nckj5tcu> References: <20250709172345.1031907-1-vitaly.wool@konsulko.se> <20250709172441.1032006-1-vitaly.wool@konsulko.se> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Migadu-Flow: FLOW_OUT X-Rspam-User: X-Rspamd-Queue-Id: C51A6140006 X-Rspamd-Server: rspam03 X-Stat-Signature: 81s4pma4gbe9ugc5baxd981kkuu5uw9n X-HE-Tag: 1752232328-956139 X-HE-Meta: U2FsdGVkX18wAxO9KrT51Rue0BQ3AqPsNczk/PPB7VnpyZsW90mcL2ecLO3LIppdiulyQdZna6zfHNaVsXiVP+2Md/ITB23S+FoZMuOQLm0IagMAVolJJ8Hzfcbk0ndmFshTeaOXlzPGsvv2fw6Jl7KcqbzeMcHSTRUuCvzHHvZV3l99lkxgcGkX1zOkwbUfRGsUkMYf0JQOzgTyAtid3dS1Ie26PG73SCR4BRfJKNYyz3tc3pLVU2vWv61jHOcOnjtLGADAunddu7LNk7wBoQfGntTIoc7TuC4gvGFyRQInesRuNW4H01bsy+nBHFFf0Qc5NGLVRGU5s+Fv3qIUszY6Al4k9eyio0kh0hC1tk04ZGsuI0WpOsdDhHvNE5eFOYrNO7hWUin4ad+HQbx+GncA9JibMq8BXKAyrpVHUAQxQpYQnzl8nIujamJXvUPWwcvKaq3ICxAW87lH0ZZa14rpgcN4HT+CTBvcTUqdvz9wrAr1CHIdVIgUmjQ5PoW1z1BSuUeNwIrXYkHGjt3Z5YAwj1h0p8HIhSTf0mfAtBW91W1AIHZphXQdjTxR3LEYzT3T/75ppvcsVohFHrkEZfqbPYPxTgDArx1zIv57lPze3kEO3osbXMjPa24UCFQvPLGQM8/ZmeaIxjHzGuSL5MnQvCs843lDHCMAWaIZRT16bubwfWYQKMGerZW0XlDdrzGkEPImc8uO2FgPsL5IMIaShwWuL0oMUMA8V/27VqWlXpbvqZlGvDW64QwmB6Rssrogv4oYffbYRaVhZiBLJ8OYdSLVcjo/hLb6XlZik47v54wo8pwq0mqfpzWt1Y/6YaaBnUCtiFdRX0Uv0AWnLe5C9+zAhnKRXlI83T9lTqdjw9sx9cOo7gi1OCMeI9j/bLzAHj8RTK2XRnZ6v6Dy5nxTiy3EWIkP+2YkOhJnuV3OoAKi2tE4kFj/L16BqKqHIeiv5nOr94Ob+TbCmBY G4wbcwOO R/b+IJZ3IXy9GvxG6/1dvBej5OMQAq2eL6tSFzY7Wv7boqc9zaO3S6lomxP4O3/Ak+KME2V3RHNX7EsHN4Kr99HtMYY4bLz9EgZPiBbgPkJqgguvfGgRUpv5e0qJhjHTCCN1FPdd9gRveT0OjCVBwU0R3NfErJ7mH0SHJb734JjaPrzJz6U2+q8Bc6EkN8TPEan0izO8NpTAH9DD2+6zBnS2hUytod3t4ko6ctXMPuFhnKSFtxToYtoYxVA== 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 Fri, Jul 11, 2025 at 05:58:23PM +0900, Harry Yoo wrote: > On Wed, Jul 09, 2025 at 07:24:41PM +0200, Vitaly Wool wrote: > > Reimplement k[v]realloc_node() to be able to set node and > > alignment should a user need to do so. In order to do that while > > retaining the maximal backward compatibility, add > > k[v]realloc_node_align() functions and redefine the rest of API > > using these new ones. > > > > While doing that, we also keep the number of _noprof variants to a > > minimum, which implies some changes to the existing users of older > > _noprof functions, that basically being bcachefs. > > > > With that change we also provide the ability for the Rust part of > > the kernel to set node and alignment in its K[v]xxx > > [re]allocations. > > > > Signed-off-by: Vitaly Wool > > --- > > fs/bcachefs/darray.c | 2 +- > > fs/bcachefs/util.h | 2 +- > > include/linux/bpfptr.h | 2 +- > > include/linux/slab.h | 38 +++++++++++++++---------- > > lib/rhashtable.c | 4 +-- > > mm/slub.c | 64 +++++++++++++++++++++++++++++------------- > > 6 files changed, 72 insertions(+), 40 deletions(-) > > > diff --git a/mm/slub.c b/mm/slub.c > > index c4b64821e680..6fad4cdea6c4 100644 > > --- a/mm/slub.c > > +++ b/mm/slub.c > > @@ -4845,7 +4845,7 @@ void kfree(const void *object) > > EXPORT_SYMBOL(kfree); > > > > static __always_inline __realloc_size(2) void * > > -__do_krealloc(const void *p, size_t new_size, gfp_t flags) > > +__do_krealloc(const void *p, size_t new_size, unsigned long align, gfp_t flags, int nid) > > { > > void *ret; > > size_t ks = 0; > > @@ -4859,6 +4859,20 @@ __do_krealloc(const void *p, size_t new_size, gfp_t flags) > > if (!kasan_check_byte(p)) > > return NULL; > > > > + /* refuse to proceed if alignment is bigger than what kmalloc() provides */ > > + if (!IS_ALIGNED((unsigned long)p, align) || new_size < align) > > + return NULL; > > Hmm but what happens if `p` is aligned to `align`, but the new object is not? > > For example, what will happen if we allocate object with size=64, align=64 > and then do krealloc with size=96, align=64... > > Or am I missing something? You generally need size to be a multiple of align...