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 028A7C4167B for ; Tue, 5 Dec 2023 10:17:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 83C646B0095; Tue, 5 Dec 2023 05:17:01 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7EBAF6B0098; Tue, 5 Dec 2023 05:17:01 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6DAB36B0099; Tue, 5 Dec 2023 05:17:01 -0500 (EST) 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 5EC526B0095 for ; Tue, 5 Dec 2023 05:17:01 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 24A22402F2 for ; Tue, 5 Dec 2023 10:17:01 +0000 (UTC) X-FDA: 81532361442.23.BDACE9F Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by imf03.hostedemail.com (Postfix) with ESMTP id D25F720007 for ; Tue, 5 Dec 2023 10:16:58 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf03.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=1701771419; 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; bh=L8u0GTc7MD6XLgY8Qms86a3Tg/qLA5sTEiRQbdzvIt0=; b=fCVmH5pgcpRkbkR/KVdJbaLE7mVvTryFG8IJSyLaIGcdEVJEapI9E9YvBZS2RVk5QZLO8z KXXSkv0oHV9Q2mADWFo10Juf6Hyl6WD6nLVdecTbJ7ZI75wf79ZHXdRZ0mXCrc9LvVB5N5 iyk8+ZOtU13gp4WuKGrwGk0jimbKw48= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf03.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.130 as permitted sender) smtp.mailfrom=vbabka@suse.cz ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701771419; a=rsa-sha256; cv=none; b=tpVhbNUnFm7KO3mTYd3hppeMXm13Jms+TQxGhim22dbsvlhoUd+mhrI794LybiQ57T0j06 pyBlcj0e1CUlSpWA4wVHnogdtjrClKNk8228Xedbc2NeAzKy7E/flN9BMYfZTcGSFkioRQ vuFA2duz7kJT8hGSFRbzK7i7ZfGSnqE= Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104: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 9D0EA2207E; Tue, 5 Dec 2023 10:16:56 +0000 (UTC) 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 6C908136CF; Tue, 5 Dec 2023 10:16:56 +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 3fBhGZj4bmV8aAAAD6G6ig (envelope-from ); Tue, 05 Dec 2023 10:16:56 +0000 Message-ID: <432494ef-b47f-16fa-41a0-f68613f94fc4@suse.cz> Date: Tue, 5 Dec 2023 11:16:56 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH v2 03/21] KASAN: remove code paths guarded by CONFIG_SLAB Content-Language: en-US To: Hyeonggon Yoo <42.hyeyoo@gmail.com> Cc: David Rientjes , Christoph Lameter , Pekka Enberg , Joonsoo Kim , Andrew Morton , Roman Gushchin , Andrey Ryabinin , Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino , Marco Elver , Johannes Weiner , Michal Hocko , Shakeel Butt , Muchun Song , Kees Cook , linux-mm@kvack.org, linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, cgroups@vger.kernel.org, linux-hardening@vger.kernel.org References: <20231120-slab-remove-slab-v2-0-9c9c70177183@suse.cz> <20231120-slab-remove-slab-v2-3-9c9c70177183@suse.cz> From: Vlastimil Babka In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spamd-Bar: ++++++++++++ X-Rspam-User: X-Stat-Signature: ucokgz4pon3fbf1g3d4piepc9pa8dgkz X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: D25F720007 X-HE-Tag: 1701771418-862251 X-HE-Meta: U2FsdGVkX1+LgG0znjQQxYmXi2xYvJDuugiQYkan+f3us11RpvJ/jbm4/0IDMGmGo73KMkjILer8LLe5m7zD/klDtjcPe+40LbRhdovYvcf7VBBziKfL2eRrAejRgeRCrxiAeHX3ajBkAUp35SZgJuTA3cqRrIXjyuZ3BXcyHnkjTMJX3BP4Qm/wleLnemkyIfBWPVejmKELbRbvaDsDCKAxdeKQwg0YzReSPGc/7duZKDXO5R+Qzfy2xHkOZVVeswqTDaaj0UyOQb41mmCxkwYwdkXhORDrKMbxEiKgUn4mpXGqPEmIkqi2kwkpX6JD/7NWRiFH8+KYZCLZ5qGtcu2Faqsvsl6z56sesv8uy2GBr4sFHVWZGxv43994l0aGzNTNg4ImAR2NisX09NkfmGP1j7pckDG/ePBfyqf+po5g8v7LtpCMfTwoqFHPvfqlZNs5y6f+1CkXs2YsD86y5pVspd//3RMDhk7lRNNrvYZGo+N3lJ+BxMMGD47PbgAGKrv9psciU+X946+FmJtdlbUwoEcDWO0AMzh5xtyI5K87120bULdQb49FzA1Ci0cyvCt6615AJmAH+rkZNYRiHa5T3ZzgIlQmiqIdU8HvkxgVEF8/bqSue7aJSoK6gTGXp603/iCJhi/ROHds7mph1agacH3BEjDp9cO5rivf5JNTQ42Go8G65JGihhpqcHY4gn/X/2WSgfnV9A45XceBLEb3PCttiP3manXHv4d5fQWfCGqwgq803kf6gU8e8vlVb0tT5f7O9mDZv8koBxEDvDoyP31m4tiztlCVd7sRGKP7cdH/WJ7SCzkMVDCrQDAPAfw87eZ1tlU1FF0+nX/xouPKK24HPXAX/JhMXtLXVRccZx9ZyFz1VVRtCeCVHmLdcSXEVUZy1PjWprEDqzUuJ7GASRxfZVG26h8d/FJvo1pFqMT5BNTqw0X/XUnbj/X4v8p5dOHdEqrTQwMWDEs 7rseqs/t rFDfbhKBci6kmfntSZrbqQC2PwwXilWunL+gaWvT/ETPC4byk8EHRbyvPTVFhV5A/to+OPhwbhp0qdlQDo/lrGEu37k1VKGyyzb6LR1i9madNjUEMT1OecndnCU9SvZM62dBsZsJ/+tvcEzUtV9BSfBq1srMYvfrjVKT161Lhnl2MoRTcMaau7VxTCW/RnCCbexl45uOp71ojxmoZQVR7pip+v7wOtLvrxhr0lmbM+0uvnn+8yjUCL3oD7rX+9dCb8TsAiE9vk7Wc38n/E4CIVJbVhEV5cqpj3Wg4tAnMeP8u0GWwZpW9nlYct+wyj4QlFb0vPsx7vI8WrTY1isoujgsjTg== 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 12/5/23 05:48, Hyeonggon Yoo wrote: > On Tue, Dec 5, 2023 at 1:27 PM Hyeonggon Yoo <42.hyeyoo@gmail.com> wrote: >> >> On Mon, Nov 20, 2023 at 07:34:14PM +0100, Vlastimil Babka wrote: >> > With SLAB removed and SLUB the only remaining allocator, we can clean up >> > some code that was depending on the choice. >> > >> > Reviewed-by: Kees Cook >> > Reviewed-by: Marco Elver >> > Signed-off-by: Vlastimil Babka >> > --- >> > mm/kasan/common.c | 13 ++----------- >> > mm/kasan/kasan.h | 3 +-- >> > mm/kasan/quarantine.c | 7 ------- >> > 3 files changed, 3 insertions(+), 20 deletions(-) >> > >> > diff --git a/mm/kasan/common.c b/mm/kasan/common.c >> > index 256930da578a..5d95219e69d7 100644 >> > --- a/mm/kasan/common.c >> > +++ b/mm/kasan/common.c >> > @@ -153,10 +153,6 @@ void __kasan_poison_object_data(struct kmem_cache *cache, void *object) >> > * 2. A cache might be SLAB_TYPESAFE_BY_RCU, which means objects can be >> > * accessed after being freed. We preassign tags for objects in these >> > * caches as well. >> > - * 3. For SLAB allocator we can't preassign tags randomly since the freelist >> > - * is stored as an array of indexes instead of a linked list. Assign tags >> > - * based on objects indexes, so that objects that are next to each other >> > - * get different tags. >> > */ >> > static inline u8 assign_tag(struct kmem_cache *cache, >> > const void *object, bool init) >> > @@ -171,17 +167,12 @@ static inline u8 assign_tag(struct kmem_cache *cache, >> > if (!cache->ctor && !(cache->flags & SLAB_TYPESAFE_BY_RCU)) >> > return init ? KASAN_TAG_KERNEL : kasan_random_tag(); >> > >> > - /* For caches that either have a constructor or SLAB_TYPESAFE_BY_RCU: */ >> > -#ifdef CONFIG_SLAB >> > - /* For SLAB assign tags based on the object index in the freelist. */ >> > - return (u8)obj_to_index(cache, virt_to_slab(object), (void *)object); >> > -#else >> > /* >> > - * For SLUB assign a random tag during slab creation, otherwise reuse >> > + * For caches that either have a constructor or SLAB_TYPESAFE_BY_RCU, >> > + * assign a random tag during slab creation, otherwise reuse >> > * the already assigned tag. >> > */ >> > return init ? kasan_random_tag() : get_tag(object); >> > -#endif >> > } >> > >> > void * __must_check __kasan_init_slab_obj(struct kmem_cache *cache, >> > diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h >> > index 8b06bab5c406..eef50233640a 100644 >> > --- a/mm/kasan/kasan.h >> > +++ b/mm/kasan/kasan.h >> > @@ -373,8 +373,7 @@ void kasan_set_track(struct kasan_track *track, gfp_t flags); >> > void kasan_save_alloc_info(struct kmem_cache *cache, void *object, gfp_t flags); >> > void kasan_save_free_info(struct kmem_cache *cache, void *object); >> > >> > -#if defined(CONFIG_KASAN_GENERIC) && \ >> > - (defined(CONFIG_SLAB) || defined(CONFIG_SLUB)) >> > +#ifdef CONFIG_KASAN_GENERIC >> > bool kasan_quarantine_put(struct kmem_cache *cache, void *object); >> > void kasan_quarantine_reduce(void); >> > void kasan_quarantine_remove_cache(struct kmem_cache *cache); >> > diff --git a/mm/kasan/quarantine.c b/mm/kasan/quarantine.c >> > index ca4529156735..138c57b836f2 100644 >> > --- a/mm/kasan/quarantine.c >> > +++ b/mm/kasan/quarantine.c >> > @@ -144,10 +144,6 @@ static void qlink_free(struct qlist_node *qlink, struct kmem_cache *cache) >> > { >> > void *object = qlink_to_object(qlink, cache); >> > struct kasan_free_meta *meta = kasan_get_free_meta(cache, object); >> > - unsigned long flags; >> > - >> > - if (IS_ENABLED(CONFIG_SLAB)) >> > - local_irq_save(flags); >> > >> > /* >> > * If init_on_free is enabled and KASAN's free metadata is stored in >> > @@ -166,9 +162,6 @@ static void qlink_free(struct qlist_node *qlink, struct kmem_cache *cache) >> > *(u8 *)kasan_mem_to_shadow(object) = KASAN_SLAB_FREE; >> > >> > ___cache_free(cache, object, _THIS_IP_); >> > - >> > - if (IS_ENABLED(CONFIG_SLAB)) >> > - local_irq_restore(flags); >> > } >> > >> > static void qlist_free_all(struct qlist_head *q, struct kmem_cache *cache) >> >> Looks good to me, >> Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> Thanks! > nit: Some KASAN tests depends on SLUB, but as now it's the only allocator > KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_SLUB); in > mm/kasan/kasan_test.c can be removed Hmm I see, but will rather also leave it for later cleanup at this point, thanks! >> >> > >> > -- >> > 2.42.1 >> > >> >