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 7CE88C48BF6 for ; Wed, 21 Feb 2024 07:15:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id ECB876B0082; Wed, 21 Feb 2024 02:15:25 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E7C366B0083; Wed, 21 Feb 2024 02:15:25 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D42FE6B0085; Wed, 21 Feb 2024 02:15:25 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id C05936B0082 for ; Wed, 21 Feb 2024 02:15:25 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 95A0614092D for ; Wed, 21 Feb 2024 07:15:25 +0000 (UTC) X-FDA: 81814950210.30.F8F3479 Received: from out-174.mta1.migadu.com (out-174.mta1.migadu.com [95.215.58.174]) by imf04.hostedemail.com (Postfix) with ESMTP id B378D40004 for ; Wed, 21 Feb 2024 07:15:23 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=fm28TUMb; spf=pass (imf04.hostedemail.com: domain of chengming.zhou@linux.dev designates 95.215.58.174 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1708499723; a=rsa-sha256; cv=none; b=l1I/N9HUZ0x3DSk/XLR2TznGAvoN6Sjh3D80gCoaNNspFqMSdGk2gtOTXGgoMc+L5vMGu2 463oH9K2kCiiWeLj9rkjJIQjj+IyH1ZvBHofDMZUT9buhG+JV8nc9zhAGfogL1XObhatvj AxgruTGSOVuDmr0bZVEg7kbMbiWPmYI= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=fm28TUMb; spf=pass (imf04.hostedemail.com: domain of chengming.zhou@linux.dev designates 95.215.58.174 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1708499723; 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=x6jQuMnrBC0WcnisUd1nhZPzN/7+9FC41RDCX5WDq+o=; b=3ieJ875DeaikIJzi5SO+wgBIvWVkpunPEUCLOBCA8g5nH9c0dRIdu1ifRKUN9hGCZegrJK jGMOpZGg5X7MWfm4mf3qR77cEXx9WMquc1xhLUOEzX0GvDbN+QIyLG2JuSEPTCbZpIiEGO 2/3GCvKk72yuNJXtaD7WzxQwMu+f5tc= Message-ID: <50522603-85a9-4e4b-ab44-db40ee7bf476@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1708499721; 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: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=x6jQuMnrBC0WcnisUd1nhZPzN/7+9FC41RDCX5WDq+o=; b=fm28TUMb8zXckOAu3/NuPD5LD9RNiEjIiIrse4G029PoUxs4HGZd4wSISHMflFjf9gWHOI gvd5xNDghD/rgwRQx5YGs4X33VZZ2xgayFfvzFCCkc3ez8gYMv/o7msxVwW8NWgrJmyJrt TICDT+NJGOIBOSEzkVrRhbFHeer2XJ8= Date: Wed, 21 Feb 2024 15:14:44 +0800 MIME-Version: 1.0 Subject: Re: [PATCH 3/3] mm, slab, kasan: replace kasan_never_merge() with SLAB_NO_MERGE Content-Language: en-US To: Vlastimil Babka , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Andrey Ryabinin , Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino Cc: Zheng Yejian , Xiongwei Song , linux-mm@kvack.org, linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com References: <20240220-slab-cleanup-flags-v1-0-e657e373944a@suse.cz> <20240220-slab-cleanup-flags-v1-3-e657e373944a@suse.cz> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Chengming Zhou In-Reply-To: <20240220-slab-cleanup-flags-v1-3-e657e373944a@suse.cz> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_OUT X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: B378D40004 X-Stat-Signature: go7gfk8ppfyeod1xzph6h6e1zu6t65ia X-Rspam-User: X-HE-Tag: 1708499723-741985 X-HE-Meta: U2FsdGVkX1/86hH8/jP/ecsLLUzO55DTtXm6Od3ge6S8B1NgL1V9acvqbCVv9PtszZE+KuP6Vfh+GD6KUv7d57MAT7COrsfipORfbxEH09bNDAAQef8Sb+TC4Ur6BxDuc67c1QxifdBiFduUYDxAabgWJbPgHnD/AJubNN372HmUpZS/XEoNHhz9svEZlOYdX6YYMIIFCNCF5Xdxi1NIWlvyylymErZRa6n5xwjhJjzPhHewU6OZZxNVteFmMJC4PKb3CIhcP1jXGBS31R1JQnfldtXHmEqyKKsyoJ5FaIsJcqsZYhD1/iZhMhBXyrE+q7yfKaxvwbzDb6p4HKBxlYDkKPuDfWl5URbRo3lvFVCET4CgX5fXSJjvJMJQjpMkRsJwQhAceuwQgvAtVgkZYKkcIMRF9KYsNgC+Cb8T3elRkIChVIZWvjLCn+YEkRMovDMnAuW5ChBFjof45YgWsMalbSVwhCDY6gpMzRKhPlZ2LcAtDGTJ02E+GXHQvz2elU1KR6l1UWWwYsjJtw0qzcF0HNzTEq5JAhhowajL5FymVS89OWEN9CASDBgB9Dq2DObpLjyH21M+nX5yOQ5tLTwemHUtnVFJY8r8mSR4rZkcGg5weqz9zsBuJ/vIxZMh5n3YTvnF5oGisFtCKTAxIF93cuBtTTSjCSyIsBdywkF53lbsn4XYEQFpVLSLSf1Xj2BbIuMJZiloFs0grLUZ6LmiGCmcj9IaBFICPFzdRIEPakMrVFSl13AMx/0/RzJaRbnSreJxvajS2BaSPd/gi02MEqXGd9OAUx1Ndr/KUbQnEuIu8oEbA4HHODY6crjvZ7QEGTbk8NJZPZWlmJ/Zt/CVttJyzj/jEp/5AGbF8l/ynmN+ExHe4qMRV+gl5BGc1PNqm1fmCfEm4lLLVSWrTwNwTSrSbJ/R7SVpnObpEBc3mIFHylATRlTIdDBvfwr4bCI34AEa9UeE/McsWOJ s08zjT67 qctDXVcQhYoDX+tYM29SOd49zX4eP94t7e8S6WPPcFLOI/uKPPahflu9Lkjozb5bD9TR1O/FSho1oqSSEJwTV+L8SViuP6OkPbl2FczbwvygwD4ZW50jl1jQoZEfpU5nDw+EF2Yh5R25zo3HGFPFsd17EZO7SXYfBbQFacy8p4nGPDwHIHoDsPS5jiLFPfkxTGLmMDqOSAkqiR4E= 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 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 Reviewed-by: Chengming Zhou 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) >