From: Chengming Zhou <chengming.zhou@linux.dev>
To: Vlastimil Babka <vbabka@suse.cz>,
Christoph Lameter <cl@linux.com>,
Pekka Enberg <penberg@kernel.org>,
David Rientjes <rientjes@google.com>,
Joonsoo Kim <iamjoonsoo.kim@lge.com>,
Andrew Morton <akpm@linux-foundation.org>,
Roman Gushchin <roman.gushchin@linux.dev>,
Hyeonggon Yoo <42.hyeyoo@gmail.com>,
Andrey Ryabinin <ryabinin.a.a@gmail.com>,
Alexander Potapenko <glider@google.com>,
Andrey Konovalov <andreyknvl@gmail.com>,
Dmitry Vyukov <dvyukov@google.com>,
Vincenzo Frascino <vincenzo.frascino@arm.com>
Cc: Zheng Yejian <zhengyejian1@huawei.com>,
Xiongwei Song <xiongwei.song@windriver.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
kasan-dev@googlegroups.com
Subject: Re: [PATCH 3/3] mm, slab, kasan: replace kasan_never_merge() with SLAB_NO_MERGE
Date: Wed, 21 Feb 2024 15:14:44 +0800 [thread overview]
Message-ID: <50522603-85a9-4e4b-ab44-db40ee7bf476@linux.dev> (raw)
In-Reply-To: <20240220-slab-cleanup-flags-v1-3-e657e373944a@suse.cz>
On 2024/2/21 00:58, Vlastimil Babka wrote:
> The SLAB_KASAN flag prevents merging of caches in some configurations,
> which is handled in a rather complicated way via kasan_never_merge().
> Since we now have a generic SLAB_NO_MERGE flag, we can instead use it
> for KASAN caches in addition to SLAB_KASAN in those configurations,
> and simplify the SLAB_NEVER_MERGE handling.
>
> Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Reviewed-by: Chengming Zhou <chengming.zhou@linux.dev>
Thanks!
> ---
> include/linux/kasan.h | 6 ------
> mm/kasan/generic.c | 16 ++++------------
> mm/slab_common.c | 2 +-
> 3 files changed, 5 insertions(+), 19 deletions(-)
>
> diff --git a/include/linux/kasan.h b/include/linux/kasan.h
> index dbb06d789e74..70d6a8f6e25d 100644
> --- a/include/linux/kasan.h
> +++ b/include/linux/kasan.h
> @@ -429,7 +429,6 @@ struct kasan_cache {
> };
>
> size_t kasan_metadata_size(struct kmem_cache *cache, bool in_object);
> -slab_flags_t kasan_never_merge(void);
> void kasan_cache_create(struct kmem_cache *cache, unsigned int *size,
> slab_flags_t *flags);
>
> @@ -446,11 +445,6 @@ static inline size_t kasan_metadata_size(struct kmem_cache *cache,
> {
> return 0;
> }
> -/* And thus nothing prevents cache merging. */
> -static inline slab_flags_t kasan_never_merge(void)
> -{
> - return 0;
> -}
> /* And no cache-related metadata initialization is required. */
> static inline void kasan_cache_create(struct kmem_cache *cache,
> unsigned int *size,
> diff --git a/mm/kasan/generic.c b/mm/kasan/generic.c
> index df6627f62402..d8b78d273b9f 100644
> --- a/mm/kasan/generic.c
> +++ b/mm/kasan/generic.c
> @@ -334,14 +334,6 @@ DEFINE_ASAN_SET_SHADOW(f3);
> DEFINE_ASAN_SET_SHADOW(f5);
> DEFINE_ASAN_SET_SHADOW(f8);
>
> -/* Only allow cache merging when no per-object metadata is present. */
> -slab_flags_t kasan_never_merge(void)
> -{
> - if (!kasan_requires_meta())
> - return 0;
> - return SLAB_KASAN;
> -}
> -
> /*
> * Adaptive redzone policy taken from the userspace AddressSanitizer runtime.
> * For larger allocations larger redzones are used.
> @@ -372,13 +364,13 @@ void kasan_cache_create(struct kmem_cache *cache, unsigned int *size,
> /*
> * SLAB_KASAN is used to mark caches that are sanitized by KASAN
> * and that thus have per-object metadata.
> - * Currently this flag is used in two places:
> + * Currently this flag is used in one place:
> * 1. In slab_ksize() to account for per-object metadata when
> * calculating the size of the accessible memory within the object.
> - * 2. In slab_common.c via kasan_never_merge() to prevent merging of
> - * caches with per-object metadata.
> + * Additionally, we use SLAB_NO_MERGE to prevent merging of caches
> + * with per-object metadata.
> */
> - *flags |= SLAB_KASAN;
> + *flags |= SLAB_KASAN | SLAB_NO_MERGE;
>
> ok_size = *size;
>
> diff --git a/mm/slab_common.c b/mm/slab_common.c
> index 238293b1dbe1..7cfa2f1ce655 100644
> --- a/mm/slab_common.c
> +++ b/mm/slab_common.c
> @@ -50,7 +50,7 @@ static DECLARE_WORK(slab_caches_to_rcu_destroy_work,
> */
> #define SLAB_NEVER_MERGE (SLAB_RED_ZONE | SLAB_POISON | SLAB_STORE_USER | \
> SLAB_TRACE | SLAB_TYPESAFE_BY_RCU | SLAB_NOLEAKTRACE | \
> - SLAB_FAILSLAB | SLAB_NO_MERGE | kasan_never_merge())
> + SLAB_FAILSLAB | SLAB_NO_MERGE)
>
> #define SLAB_MERGE_SAME (SLAB_RECLAIM_ACCOUNT | SLAB_CACHE_DMA | \
> SLAB_CACHE_DMA32 | SLAB_ACCOUNT)
>
next prev parent reply other threads:[~2024-02-21 7:15 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-20 16:58 [PATCH 0/3] cleanup of SLAB_ flags Vlastimil Babka
2024-02-20 16:58 ` [PATCH 1/3] mm, slab: deprecate SLAB_MEM_SPREAD flag Vlastimil Babka
2024-02-21 2:17 ` Song, Xiongwei
2024-02-21 7:11 ` Chengming Zhou
2024-02-21 18:30 ` Roman Gushchin
2024-02-22 1:10 ` Song, Xiongwei
2024-02-22 2:32 ` Chengming Zhou
2024-02-22 3:13 ` Song, Xiongwei
2024-02-23 16:41 ` Vlastimil Babka
2024-02-24 9:32 ` Chengming Zhou
2024-02-20 16:58 ` [PATCH 2/3] mm, slab: use an enum to define SLAB_ cache creation flags Vlastimil Babka
2024-02-21 2:23 ` Song, Xiongwei
2024-02-21 7:13 ` Chengming Zhou
2024-02-21 18:33 ` Roman Gushchin
2024-02-23 16:42 ` Vlastimil Babka
2024-02-21 22:19 ` Vlastimil Babka
2024-02-22 1:54 ` kernel test robot
2024-02-22 1:54 ` kernel test robot
2024-02-23 3:12 ` Christoph Lameter (Ampere)
2024-02-23 16:43 ` Vlastimil Babka
2024-02-23 17:06 ` Vlastimil Babka
2024-02-20 16:58 ` [PATCH 3/3] mm, slab, kasan: replace kasan_never_merge() with SLAB_NO_MERGE Vlastimil Babka
2024-02-21 2:25 ` Song, Xiongwei
2024-02-21 7:14 ` Chengming Zhou [this message]
2024-02-21 20:48 ` Andrey Konovalov
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=50522603-85a9-4e4b-ab44-db40ee7bf476@linux.dev \
--to=chengming.zhou@linux.dev \
--cc=42.hyeyoo@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=andreyknvl@gmail.com \
--cc=cl@linux.com \
--cc=dvyukov@google.com \
--cc=glider@google.com \
--cc=iamjoonsoo.kim@lge.com \
--cc=kasan-dev@googlegroups.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=penberg@kernel.org \
--cc=rientjes@google.com \
--cc=roman.gushchin@linux.dev \
--cc=ryabinin.a.a@gmail.com \
--cc=vbabka@suse.cz \
--cc=vincenzo.frascino@arm.com \
--cc=xiongwei.song@windriver.com \
--cc=zhengyejian1@huawei.com \
/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.