From: Mike Rapoport <rppt@kernel.org>
To: Christian Brauner <brauner@kernel.org>
Cc: Vlastimil Babka <vbabka@suse.cz>, Jens Axboe <axboe@kernel.dk>,
Jann Horn <jannh@google.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
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
Date: Wed, 4 Sep 2024 08:08:05 +0300 [thread overview]
Message-ID: <ZtfrNWTZxCAiB2ok@kernel.org> (raw)
In-Reply-To: <20240903-work-kmem_cache_args-v2-9-76f97e9a4560@kernel.org>
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 <brauner@kernel.org>
> ---
> 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) <rppt@kernel.org>
> {
> 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.
next prev parent reply other threads:[~2024-09-04 5:10 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-03 14:20 [PATCH v2 00/15] slab: add struct kmem_cache_args Christian Brauner
2024-09-03 14:20 ` [PATCH v2 01/15] sl*b: s/__kmem_cache_create/do_kmem_cache_create/g Christian Brauner
2024-09-04 4:52 ` Mike Rapoport
2024-09-03 14:20 ` [PATCH v2 02/15] slab: add struct kmem_cache_args Christian Brauner
2024-09-04 4:54 ` Mike Rapoport
2024-09-04 8:13 ` Vlastimil Babka
2024-09-04 9:06 ` Christian Brauner
2024-09-04 15:16 ` Mike Rapoport
2024-09-04 15:48 ` Christian Brauner
2024-09-04 16:16 ` Mike Rapoport
2024-09-04 16:53 ` Christian Brauner
2024-09-04 15:49 ` Vlastimil Babka
2024-09-04 16:16 ` Mike Rapoport
2024-09-04 16:22 ` Vlastimil Babka
2024-09-04 18:21 ` Christian Brauner
2024-09-04 18:53 ` Linus Torvalds
2024-09-04 20:10 ` Christian Brauner
2024-09-03 14:20 ` [PATCH v2 03/15] slab: port kmem_cache_create() to " Christian Brauner
2024-09-04 4:55 ` Mike Rapoport
2024-09-03 14:20 ` [PATCH v2 04/15] slab: port kmem_cache_create_rcu() " Christian Brauner
2024-09-04 4:55 ` Mike Rapoport
2024-09-03 14:20 ` [PATCH v2 05/15] slab: port kmem_cache_create_usercopy() " Christian Brauner
2024-09-04 4:56 ` Mike Rapoport
2024-09-04 8:14 ` Vlastimil Babka
2024-09-04 8:59 ` Christian Brauner
2024-09-03 14:20 ` [PATCH v2 06/15] slab: pass struct kmem_cache_args to create_cache() Christian Brauner
2024-09-04 4:59 ` Mike Rapoport
2024-09-03 14:20 ` [PATCH v2 07/15] slub: pull kmem_cache_open() into do_kmem_cache_create() Christian Brauner
2024-09-04 5:02 ` Mike Rapoport
2024-09-03 14:20 ` [PATCH v2 08/15] slab: pass struct kmem_cache_args to do_kmem_cache_create() Christian Brauner
2024-09-04 5:04 ` Mike Rapoport
2024-09-03 14:20 ` [PATCH v2 09/15] sl*b: remove rcu_freeptr_offset from struct kmem_cache Christian Brauner
2024-09-04 5:08 ` Mike Rapoport [this message]
2024-09-04 8:16 ` Vlastimil Babka
2024-09-04 8:58 ` Christian Brauner
2024-09-03 14:20 ` [PATCH v2 10/15] slab: port KMEM_CACHE() to struct kmem_cache_args Christian Brauner
2024-09-04 5:08 ` Mike Rapoport
2024-09-03 14:20 ` [PATCH v2 11/15] slab: port KMEM_CACHE_USERCOPY() " Christian Brauner
2024-09-04 5:09 ` Mike Rapoport
2024-09-03 14:20 ` [PATCH v2 12/15] slab: create kmem_cache_create() compatibility layer Christian Brauner
2024-09-04 5:14 ` Mike Rapoport
2024-09-04 9:44 ` [PATCH 17/16] slab: make kmem_cache_create_usercopy() static inline Christian Brauner
2024-09-04 9:44 ` [PATCH 18/16] slab: make __kmem_cache_create() " Christian Brauner
2024-09-04 9:45 ` [PATCH v2 12/15] slab: create kmem_cache_create() compatibility layer Christian Brauner
2024-09-04 10:50 ` Vlastimil Babka
2024-09-04 11:38 ` Christian Brauner
2024-09-04 13:33 ` Vlastimil Babka
2024-09-04 14:44 ` Christian Brauner
2024-09-04 15:11 ` Mike Rapoport
2024-09-04 15:38 ` Christian Brauner
2024-09-04 15:40 ` Vlastimil Babka
2024-09-03 14:20 ` [PATCH v2 13/15] file: port to struct kmem_cache_args Christian Brauner
2024-09-04 5:15 ` Mike Rapoport
2024-09-03 14:20 ` [PATCH v2 14/15] slab: remove kmem_cache_create_rcu() Christian Brauner
2024-09-04 5:15 ` Mike Rapoport
2024-09-04 8:18 ` Vlastimil Babka
2024-09-04 8:55 ` Christian Brauner
2024-09-03 14:20 ` [PATCH v2 15/15] io_uring: port to struct kmem_cache_args Christian Brauner
2024-09-04 5:16 ` Mike Rapoport
2024-09-04 8:20 ` Vlastimil Babka
2024-09-04 8:50 ` Christian Brauner
2024-09-03 19:22 ` [PATCH v2 00/15] slab: add " Kees Cook
2024-09-03 19:25 ` Jens Axboe
2024-09-06 6:49 ` Christian Brauner
2024-09-04 8:25 ` Vlastimil Babka
2024-09-04 8:42 ` Christian Brauner
2024-09-04 9:05 ` Vlastimil Babka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZtfrNWTZxCAiB2ok@kernel.org \
--to=rppt@kernel.org \
--cc=axboe@kernel.dk \
--cc=brauner@kernel.org \
--cc=jannh@google.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=torvalds@linux-foundation.org \
--cc=vbabka@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.