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 D5293CD37AE for ; Wed, 4 Sep 2024 05:10:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 51E1F6B00F0; Wed, 4 Sep 2024 01:10:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4A7AC6B00F6; Wed, 4 Sep 2024 01:10:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 320216B00FB; Wed, 4 Sep 2024 01:10:56 -0400 (EDT) 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 13C876B00F0 for ; Wed, 4 Sep 2024 01:10:56 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 8A7BCA0CD5 for ; Wed, 4 Sep 2024 05:10:55 +0000 (UTC) X-FDA: 82525881270.08.B0872AA Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf15.hostedemail.com (Postfix) with ESMTP id DD457A001D for ; Wed, 4 Sep 2024 05:10:53 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=j0d9g5qV; spf=pass (imf15.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725426559; 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=XVosI7z5RSmkhw1i4NTToOla4mM/P+8f/LTkNNGdvj0=; b=sxPKF2oW5efAo5tVEMh7oQZa7xVgYuE4u0HxADY8XTiKEQ7yD2M2p4vGHltCz5hgO4vTKl pMMKwh9sT5eqQJDKf+K+jwGk0FJKPO8/aEng0EjLa8MeCd7GWnl+8HC4h4EwxxVf63t/fW Y/RYB9EaFZQS62tuLbsi6yQb/xZsM14= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725426559; a=rsa-sha256; cv=none; b=L6bQC70hltu0v8Jg1gVs7vxHKrxK3LVJ7cD3eqEPcxN8s4Fh7hW8/jhyNuIo/QY+OwRGem 977PLP2PPCLkBsDEZiKIOgt6Lu5txnmsEtPcy7V/LiU/GseSEHvXoenvOWPHbujlmhTHi4 2gNG3xskuEwaSm2dRk/G5nS13qkjKfE= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=j0d9g5qV; spf=pass (imf15.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 7519C5C444D; Wed, 4 Sep 2024 05:10:49 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 08326C4CEC2; Wed, 4 Sep 2024 05:10:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1725426652; bh=eiQDbB65MOj/skZg+CxDwDPLc8nbgEl5X6AiGv621pk=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=j0d9g5qVMmRbKnQkTATRthi67y3J3rGMX2uI124WLH/x14GH7eSI44TWHXDYggqo2 bn5NjaXt7c+pwfI3W4ToeWIWUEnrs8y7vVPAYewieHtVcgZeurB3+AwTXoK3icsabV RNRYijRUC57dfrr2dAEukkiQHxNYUMjv0tzuNG1H+stio3oJtI0l6EsuC7Q82OOMWP j9fZYVpEsRxb+WEkrKiM1wyRCQjqx4IyKYW9Cb1U2Seqgl3sEqCdvuTsBq9JLjiZvI FONArJUoVgUjBJEZ9U+DEkIdzxVF4V5VrJk5ryg/nJLp0kWBIOwIsUCGZIL/rtFlpT 0rpw/BNC7L+LA== Date: Wed, 4 Sep 2024 08:08:05 +0300 From: Mike Rapoport To: Christian Brauner Cc: Vlastimil Babka , Jens Axboe , Jann Horn , Linus Torvalds , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org Subject: Re: [PATCH v2 09/15] sl*b: remove rcu_freeptr_offset from struct kmem_cache Message-ID: References: <20240903-work-kmem_cache_args-v2-0-76f97e9a4560@kernel.org> <20240903-work-kmem_cache_args-v2-9-76f97e9a4560@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240903-work-kmem_cache_args-v2-9-76f97e9a4560@kernel.org> X-Rspamd-Queue-Id: DD457A001D X-Stat-Signature: zatjrpi5i45hntor5ph7wg43xw58o8d5 X-Rspamd-Server: rspam09 X-Rspam-User: X-HE-Tag: 1725426653-114135 X-HE-Meta: U2FsdGVkX1+1iIejxSyq4G7C2iEL0NITm5+8RcvRPURL0keqwWF67/tplQkpG312XXVrTOjcl8HQwjb5nWrYdOd/laICzEhHbByMckQt8bhu/3BpipQRkHFNom5UFNqhiB805tep3ZwEf/q3H7oGUEFj4YK4mUS2aBAzby0d0q0SDExdMMHARKacf4zujFfQxJVuZ9eKvWqZXUFg80+YLEfnzXjFS+JOTyBDCBUPysjvv3lMhe2rJCTEdofPRdeBQbsHkGTB6gqtZEL8jVFnILdIe+8ErNSc5v6pGxhr/uM7WVjn1fXAL+VPYPkPq2q2YICAf9SQ9nPeO6dcoUihvQX79l4xOa1Cx7pggOIRcZFNwFvddajnKeXxWNZN7BsT+NR2tvP6a57TVGzRPeQGKpqshsSQ3wA8fO5cPyXmUzipMjaJTilhADVhFBPn5qdlFtGojF4DaF4+9SluYrV4aPsQdk8X769puMqKcVcdERnSCgrhQt6EaTMOVZuSje7Z7komd7KqsLNZsrdJMQyFoZ5SGvI3GSd02lHBEkT3xaqPIPyL+xQ287K98hlhYbDzCqTKFfmsyjrYmENfoleTq9/l9xOjGxZfzV6+7uGeyskw3RHOISuTn3cVnER+gR8Q/DrfoQrVe/flCNtZpoxy1i4BsiS+Ny2SP5M2rjSsUhmabb4nwJ/VMjlGpLeAHCuBZDggHFhIONSPmpT9lfGIiZuRKoCrL6AYxHO5+Pt4RbKLFv0NzfuyOYDBlq8wHARc3WYV0Ai+lEvIxmoFzrsPN5Vuz4xUwNG5cONaUKVCAW76j8pwzkHObDYXgygVy0WpeJ3wbp6GmXmiYqqixEThOIjabgfijtTWffNSL4MnwO2yjBcyek8A3UROfLWTBpSuETJM+yvxh/EEIZN75mMPLfo4L1DbWB1y4zCO3hBXnLmt2KrD86REarhp+CzAzkOcXIS1yS2YLpyvYNFnsnY 6IezEf0T hAvs2rOF+hlMJxnMYlJhXi/j/QUuwXpAwO4s7UJwj2uXNc6jhV4hhRqJ0JbScZ4K3Msyy5f/SJC839yoZDiuTDjIo3+/I+tLUhwQeGE5G1sJvZuVRpwMZyOX5qbnF4LBhCeNfHCeoPsejoRps2JRrHWnAQnzRvLTVM74Slx/nf5yWRg0gMhXYbZ0/aw4+yqRbdXLNPT25sOr7fXINYNKQij/1twazD41oH/wcsFJt9qijcT04jKWTBjE3o4SiLiVRreRkrEZ4diY3BelC0QfsTEeY124Q9IH2VnVvOzDz3AeTUTIslHsnV5AAlAmpihNz39g4F1sP2rc74ks= 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, Sep 03, 2024 at 04:20:50PM +0200, Christian Brauner wrote: > Now that we pass down struct kmem_cache_args to calculate_sizes() we > don't need it anymore. > > Signed-off-by: Christian Brauner > --- > mm/slab.h | 2 -- > mm/slub.c | 25 +++++++------------------ > 2 files changed, 7 insertions(+), 20 deletions(-) > > diff --git a/mm/slab.h b/mm/slab.h > index c7a4e0fc3cf1..36ac38e21fcb 100644 > --- a/mm/slab.h > +++ b/mm/slab.h > @@ -261,8 +261,6 @@ struct kmem_cache { > unsigned int object_size; /* Object size without metadata */ > struct reciprocal_value reciprocal_size; > unsigned int offset; /* Free pointer offset */ > - /* Specific free pointer requested (if not UINT_MAX) */ > - unsigned int rcu_freeptr_offset; > #ifdef CONFIG_SLUB_CPU_PARTIAL > /* Number of per cpu partial objects to keep around */ > unsigned int cpu_partial; > diff --git a/mm/slub.c b/mm/slub.c > index 4719b60215b8..a23c7036cd61 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -3916,8 +3916,7 @@ static void *__slab_alloc_node(struct kmem_cache *s, > * If the object has been wiped upon free, make sure it's fully initialized by > * zeroing out freelist pointer. > * > - * Note that we also wipe custom freelist pointers specified via > - * s->rcu_freeptr_offset. > + * Note that we also wipe custom freelist pointers. > */ > static __always_inline void maybe_wipe_obj_freeptr(struct kmem_cache *s, > void *obj) > @@ -5141,17 +5140,11 @@ static void set_cpu_partial(struct kmem_cache *s) > #endif > } > > -/* Was a valid freeptr offset requested? */ > -static inline bool has_freeptr_offset(const struct kmem_cache *s) > -{ > - return s->rcu_freeptr_offset != UINT_MAX; > -} > - > /* > * calculate_sizes() determines the order and the distribution of data within > * a slab object. > */ > -static int calculate_sizes(struct kmem_cache *s) > +static int calculate_sizes(struct kmem_cache_args *args, struct kmem_cache *s) I'd keep kmem_cache the first argument. As for the rest Reviewed-by: Mike Rapoport (Microsoft) > { > slab_flags_t flags = s->flags; > unsigned int size = s->object_size; > @@ -5192,7 +5185,7 @@ static int calculate_sizes(struct kmem_cache *s) > */ > s->inuse = size; > > - if (((flags & SLAB_TYPESAFE_BY_RCU) && !has_freeptr_offset(s)) || > + if (((flags & SLAB_TYPESAFE_BY_RCU) && !args->use_freeptr_offset) || > (flags & SLAB_POISON) || s->ctor || > ((flags & SLAB_RED_ZONE) && > (s->object_size < sizeof(void *) || slub_debug_orig_size(s)))) { > @@ -5214,8 +5207,8 @@ static int calculate_sizes(struct kmem_cache *s) > */ > s->offset = size; > size += sizeof(void *); > - } else if ((flags & SLAB_TYPESAFE_BY_RCU) && has_freeptr_offset(s)) { > - s->offset = s->rcu_freeptr_offset; > + } else if ((flags & SLAB_TYPESAFE_BY_RCU) && args->use_freeptr_offset) { > + s->offset = args->freeptr_offset; > } else { > /* > * Store freelist pointer near middle of object to keep > @@ -5856,10 +5849,6 @@ int do_kmem_cache_create(struct kmem_cache *s, const char *name, > #ifdef CONFIG_SLAB_FREELIST_HARDENED > s->random = get_random_long(); > #endif > - if (args->use_freeptr_offset) > - s->rcu_freeptr_offset = args->freeptr_offset; > - else > - s->rcu_freeptr_offset = UINT_MAX; > s->align = args->align; > s->ctor = args->ctor; > #ifdef CONFIG_HARDENED_USERCOPY > @@ -5867,7 +5856,7 @@ int do_kmem_cache_create(struct kmem_cache *s, const char *name, > s->usersize = args->usersize; > #endif > > - if (!calculate_sizes(s)) > + if (!calculate_sizes(args, s)) > goto out; > if (disable_higher_order_debug) { > /* > @@ -5877,7 +5866,7 @@ int do_kmem_cache_create(struct kmem_cache *s, const char *name, > if (get_order(s->size) > get_order(s->object_size)) { > s->flags &= ~DEBUG_METADATA_FLAGS; > s->offset = 0; > - if (!calculate_sizes(s)) > + if (!calculate_sizes(args, s)) > goto out; > } > } > > -- > 2.45.2 > -- Sincerely yours, Mike.