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 F26D0CA0ED3 for ; Wed, 4 Sep 2024 08:16:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 670606B00B1; Wed, 4 Sep 2024 04:16:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5F6D36B00B2; Wed, 4 Sep 2024 04:16:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 421B86B00B3; Wed, 4 Sep 2024 04:16:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 201A76B00B1 for ; Wed, 4 Sep 2024 04:16:22 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 8B6E940E07 for ; Wed, 4 Sep 2024 08:16:21 +0000 (UTC) X-FDA: 82526348562.15.D4C4582 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by imf18.hostedemail.com (Postfix) with ESMTP id 216871C001D for ; Wed, 4 Sep 2024 08:16:18 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=AydY2+TJ; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=uh0EEPfL; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=AydY2+TJ; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=uh0EEPfL; dmarc=none; spf=pass (imf18.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.130 as permitted sender) smtp.mailfrom=vbabka@suse.cz ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725437672; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=/RixQvdJJgKlJ1BO6wHZyp+f/Qsn2l3Pj+xoq/d+w2g=; b=3DIlp1rBq/i23d0ba5qTj6mdBklOWbXoef53ps4kj7CrjBnQ6XJdFLNQfpeBMRi4KqinDJ mIbyduBRToVe8bXcIUMLDF2ND84+tPbHem3EpqPI+s2YT1PB6ADbCI4cWbdhgOwcHXs+/k VtDzzMeQ4aTWhz+TjIC0dp9GmyF41lg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725437672; a=rsa-sha256; cv=none; b=10nnEEl6kAETtxvxq6ZK+v/ZB7ojL5iLI6mCtGWoAha92lAxtgrd1TKvFB1ag3ul1AADPw FH0L5876qa0H+wrYrIbtc6ZQy+cMcdT50O243xTbKxeowWTy1BpNmfyD+hze6MvCbu15MU qnJe4cP4TCt8gP/5PiSjCXdOaiKYVZU= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=AydY2+TJ; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=uh0EEPfL; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=AydY2+TJ; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=uh0EEPfL; dmarc=none; spf=pass (imf18.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.130 as permitted sender) smtp.mailfrom=vbabka@suse.cz Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id C021F219F3; Wed, 4 Sep 2024 08:16:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1725437777; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=/RixQvdJJgKlJ1BO6wHZyp+f/Qsn2l3Pj+xoq/d+w2g=; b=AydY2+TJyWh3jQIn9uoXWyHePvtQzUYAQzoQzrA4I8IEE43Zwxx5MwjMl/bEwx+9biWiOk szfIYWMktmbEO2qa4tXTclYB/O1Oq0028FIBUThegdAt6BLwAg4DGilcNXUI1DY8fZdXaw GoRKsAJrU3ypNUVpPMQljT9PLvhNlag= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1725437777; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=/RixQvdJJgKlJ1BO6wHZyp+f/Qsn2l3Pj+xoq/d+w2g=; b=uh0EEPfLW0wPHeZgzzTnFsDoevNjbineW1p20nZPDq6arivG8FuX/BJcHiM+FQ7bLvfgpo j233WwLojdTyvPAg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1725437777; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=/RixQvdJJgKlJ1BO6wHZyp+f/Qsn2l3Pj+xoq/d+w2g=; b=AydY2+TJyWh3jQIn9uoXWyHePvtQzUYAQzoQzrA4I8IEE43Zwxx5MwjMl/bEwx+9biWiOk szfIYWMktmbEO2qa4tXTclYB/O1Oq0028FIBUThegdAt6BLwAg4DGilcNXUI1DY8fZdXaw GoRKsAJrU3ypNUVpPMQljT9PLvhNlag= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1725437777; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=/RixQvdJJgKlJ1BO6wHZyp+f/Qsn2l3Pj+xoq/d+w2g=; b=uh0EEPfLW0wPHeZgzzTnFsDoevNjbineW1p20nZPDq6arivG8FuX/BJcHiM+FQ7bLvfgpo j233WwLojdTyvPAg== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id B0395139D2; Wed, 4 Sep 2024 08:16:17 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id D5anKlEX2Gb1fQAAD6G6ig (envelope-from ); Wed, 04 Sep 2024 08:16:17 +0000 Message-ID: <79eb89f6-1e19-4785-b807-1e0459b6011b@suse.cz> Date: Wed, 4 Sep 2024 10:16:17 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 09/15] sl*b: remove rcu_freeptr_offset from struct kmem_cache Content-Language: en-US To: Christian Brauner , Jens Axboe , Jann Horn , Linus Torvalds , Mike Rapoport Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org References: <20240903-work-kmem_cache_args-v2-0-76f97e9a4560@kernel.org> <20240903-work-kmem_cache_args-v2-9-76f97e9a4560@kernel.org> From: Vlastimil Babka Autocrypt: addr=vbabka@suse.cz; keydata= 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 EP+ylKVEKb0Q2A== In-Reply-To: <20240903-work-kmem_cache_args-v2-9-76f97e9a4560@kernel.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 216871C001D X-Stat-Signature: 1npq33afga8s18nyk5xhiy5db1nnqh6i X-Rspam-User: X-HE-Tag: 1725437778-488943 X-HE-Meta: U2FsdGVkX1+niQZXiP/xgWS2KqlM0rrrQ3zfRQ7JHh1tDQel8Ah+msSnSzPIMjEuSJ4maoPa2tJGwdJImHdNcwOCam5Ynbck8Xn8MhqDP2Mcjp/bWj891RUprkXAVVOfkbgGlQIVZKTDVb/Qv+bX8CN4h7lByKyCWqNHfnUAIZbpjpl4avQXrjPLihowuSncIdAq+WB68FlkWM/OB744AoK7ZyjP/WKPVeonqaEzpq7f72nRdsVpYu5RLVdhv+w6wuk2u3AGuFFVMXH/k1iM4+vcSNKqBJbCixYYPZJLE0O8RIsoBQODyB58eN0b8nN7AqAWr9K3W9EGu1/05vWQw8ZgxYpMva1X64owhlj+1+8RRcNfT0Si6C6DSTImp8lXxprFWQCIc4JOsd/eYp9IibBtlGcCJ4uJPCDlreg/eFDv9KroNaIpVjqFBPcIBsY1Aq0OmZrXiSuFq+5YsizVVrP9/7lCOs7ifKxtApwu4sJQLkVpWHfzNjLS9FhK3KziKza0G+/wIegG7VuAj+uessUxTAhaKBZ5kh/Ue/N7/I0ywZ6fwjtFh5A5BKJczXekLpbyCfgrl1hLvJUN/nwWMTNDhZ1B9xoo/qHDFK+7hHVtMX0vSVL4k/MqgPVPNk2xjOSVrCz6PTLrZVr6iN0JqWBiuwVOK7lBJqGbnpaN+d6GE4GVhh0I5wTLDvwbgoLLeMrb+vC7kS4M8Abl3b0ReTQSYEAa5/vefbP8sYdtY+1TRAkVVRJJfzUjJ58ei/SqNxXXODDuzbJsV3aWMk/hmZmaa1a0xZ6O1V7NYCGBbNlBgASN51s2dgc9gNZm3VZ8iFbweS4pUrcpFpY4+2uWPqLOEfaHwNI2yWJwzXBzGgjq44POSM9XR8Pzm5YknqmrifiHB2d7S/JELQ/JGtyexKeiBuTMQL6+5T6o3+zylTuJv39IU1k5Zz59AyhdfD2LopLZURC3QCIJWPGLnLT GVsamVMS Sft7/3z4cFs/nwHhH9uXhiJL1EMom4wxb0nDgVy+bpHRE1GaMC6shtCqLeZ1I3Spv59sbFLFLDjxJ3vmWO2JcshKNhJSR5rXX4KxUft1rUWtSMaWgdmv4FNbUM8vW6bFM/ciWdOIcwdTskGJlZqLQS5hadoWsQAToyBxFfx0189ZQaeB3jp+mwr5aGh8wcogEpFc5yRiFHSI3z9RZzutcwmtUi5byZisd5nA7lK8qmz+HjXvhzzlTdHlQyPGTGhiW8Wm6/skYlpjxHz0i+m8fesiQfinMKCAvY+l/WOeE3tia4UF4KCLP11Rf4bvWS1FOx2VTAbd21cM+ZAAaqrtPxXFi7igb+eNbaYkbnWYEwwkOuyM6jKdyOwAKvA== 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 9/3/24 16:20, Christian Brauner wrote: > Now that we pass down struct kmem_cache_args to calculate_sizes() we > don't need it anymore. Nit: that sounds like a previous patch did the "pass down" part? Fine to do both at once but maybe adjust description that we do both here? > > 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) > { > 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; > } > } >