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 159FDC48BC4 for ; Fri, 16 Feb 2024 18:40:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1CEB66B0098; Fri, 16 Feb 2024 13:40:02 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 17E736B009B; Fri, 16 Feb 2024 13:40:02 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 01F046B009C; Fri, 16 Feb 2024 13:40:01 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id E6A326B0098 for ; Fri, 16 Feb 2024 13:40:01 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 812A91A0286 for ; Fri, 16 Feb 2024 18:40:01 +0000 (UTC) X-FDA: 81798531402.28.11A4E1B Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by imf29.hostedemail.com (Postfix) with ESMTP id 36A71120008 for ; Fri, 16 Feb 2024 18:39:58 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=T3D8vPec; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=z69yD9wW; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=T3D8vPec; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=z69yD9wW; dmarc=none; spf=pass (imf29.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=1708108799; 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=owuEgnvOaosc1e6fEV37dsj+Uoc2y36g1E2N9MOPSbU=; b=IFaH/ZpKEalIlxn/5NERKM9aWADwEkRwZr58jaG6AqSoeW/bJmeWuPf4pHDUMyXnf6b5HY lC9KLi1y6mv5kkcZVXR8IIgpagqJgNTO4/Gq1sFZRW+Xq8DwN1E/IbNerXDAZEPALlsJBU HIbBATvstA9iGc63n/Xdlw1A5yomVDU= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=T3D8vPec; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=z69yD9wW; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=T3D8vPec; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=z69yD9wW; dmarc=none; spf=pass (imf29.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=1708108799; a=rsa-sha256; cv=none; b=hAvJl1laeW1r7Keo2vVSOrTNLeh8TvrPVO2JUyY8EVyLQa3Mjh+eK5pkTq15b4Rupwb0Zt PrZEajPxlNAqscsjMiPChCGVb4Zkjeo0iN7gugsGH9tiECxAZzOBsm82FglG1TVDRYnS5x VKSVxtaJFzidYSvztV3pvywlGzFU1Sc= 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 03DCB2206F; Fri, 16 Feb 2024 18:39:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1708108797; 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; bh=owuEgnvOaosc1e6fEV37dsj+Uoc2y36g1E2N9MOPSbU=; b=T3D8vPec3pNpFlXmod27xj43+za8xehJtXjEJjuRtBo/mktHW05oGylB6ezvGFc6PLKMmn yPmSLY0xDJ+xp9Z2AET1dy/qNC4j/fo7DfG+YwD2u6qhsEz30g5n3vpoGinmcTRmTFJuEc aFyHa0Z9T7HhWJUT9vMlj6ocUutwiaM= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1708108797; 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; bh=owuEgnvOaosc1e6fEV37dsj+Uoc2y36g1E2N9MOPSbU=; b=z69yD9wW/OFsQgrqUmJct6GWlXv9jqFb/nEfoePXqTOUsy1f78dsLh7MdrAWwB2IYnRcaf 4CeMSFQrrJCGawBA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1708108797; 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; bh=owuEgnvOaosc1e6fEV37dsj+Uoc2y36g1E2N9MOPSbU=; b=T3D8vPec3pNpFlXmod27xj43+za8xehJtXjEJjuRtBo/mktHW05oGylB6ezvGFc6PLKMmn yPmSLY0xDJ+xp9Z2AET1dy/qNC4j/fo7DfG+YwD2u6qhsEz30g5n3vpoGinmcTRmTFJuEc aFyHa0Z9T7HhWJUT9vMlj6ocUutwiaM= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1708108797; 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; bh=owuEgnvOaosc1e6fEV37dsj+Uoc2y36g1E2N9MOPSbU=; b=z69yD9wW/OFsQgrqUmJct6GWlXv9jqFb/nEfoePXqTOUsy1f78dsLh7MdrAWwB2IYnRcaf 4CeMSFQrrJCGawBA== 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 6E0741398D; Fri, 16 Feb 2024 18:39: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 ya4MGvyrz2W6awAAD6G6ig (envelope-from ); Fri, 16 Feb 2024 18:39:56 +0000 Message-ID: Date: Fri, 16 Feb 2024 19:39:56 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 32/35] codetag: debug: skip objext checking when it's for objext itself Content-Language: en-US To: Suren Baghdasaryan , akpm@linux-foundation.org Cc: kent.overstreet@linux.dev, mhocko@suse.com, hannes@cmpxchg.org, roman.gushchin@linux.dev, mgorman@suse.de, dave@stgolabs.net, willy@infradead.org, liam.howlett@oracle.com, corbet@lwn.net, void@manifault.com, peterz@infradead.org, juri.lelli@redhat.com, catalin.marinas@arm.com, will@kernel.org, arnd@arndb.de, tglx@linutronix.de, mingo@redhat.com, dave.hansen@linux.intel.com, x86@kernel.org, peterx@redhat.com, david@redhat.com, axboe@kernel.dk, mcgrof@kernel.org, masahiroy@kernel.org, nathan@kernel.org, dennis@kernel.org, tj@kernel.org, muchun.song@linux.dev, rppt@kernel.org, paulmck@kernel.org, pasha.tatashin@soleen.com, yosryahmed@google.com, yuzhao@google.com, dhowells@redhat.com, hughd@google.com, andreyknvl@gmail.com, keescook@chromium.org, ndesaulniers@google.com, vvvvvv@google.com, gregkh@linuxfoundation.org, ebiggers@google.com, ytcoode@gmail.com, vincent.guittot@linaro.org, dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, bristot@redhat.com, vschneid@redhat.com, cl@linux.com, penberg@kernel.org, iamjoonsoo.kim@lge.com, 42.hyeyoo@gmail.com, glider@google.com, elver@google.com, dvyukov@google.com, shakeelb@google.com, songmuchun@bytedance.com, jbaron@akamai.com, rientjes@google.com, minchan@google.com, kaleshsingh@google.com, kernel-team@android.com, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-arch@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-modules@vger.kernel.org, kasan-dev@googlegroups.com, cgroups@vger.kernel.org References: <20240212213922.783301-1-surenb@google.com> <20240212213922.783301-33-surenb@google.com> From: Vlastimil Babka In-Reply-To: <20240212213922.783301-33-surenb@google.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spamd-Bar: / X-Rspamd-Queue-Id: 36A71120008 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: af55j1yzrup6uuxe8ryr876653qzotym X-HE-Tag: 1708108798-528956 X-HE-Meta: U2FsdGVkX1/jCbWKye/IUvH81+03MvyCmdZ6uk7zVHPZ+v8lbiKsi8qtH+c6+Z16astRAhR1CNsG3rluxftyXVDb1PkCECG/xVIw3s6VlTsw27SZ+QDHZK2HCA109DzAvvcoWORbpPbmZUJcXHN1xJyHcUW/1ImbrI5NFhPjJphpU3+sZvg4NLgLi4ekxYmAv640/yogSN2wPM4CPA0a28Q/ZSHVUl0t/MLE8jqI0Xhdwl9T5fH/Srp5jesIeCle8+BufKg+ovIn5VP4brKglJJvDCbPCDX1dwQyVuiOB/kIKT+YOYo0gzEdGOKI7Uytxa950UmVxTtMt+7+NyvMaJ60c39LEmGAj+QZUZUotNflJEllOVPJodWpYUjMZa2KPQxKWbfAcfmStNlR2eTUN98LBcJeVPQqzqHQD/h4Zff4eFLUN2u5nFVyOaqNYIJogqiejdXTJdo0tw2BQs6AtD8LHnyvvcg+YgOSdxFyPVPhWpf3Nsq035MF41O/9Tz2WqpkfkLfNyG9eeWHarhLg/Bf75rhkJ4J3eMh4LyDEDYGtgZUVG2d4fE190VI54BLjFJhu3U2CMZwIW+8ysFXE4eyE3rVbnbdP5f34V2HRK8R7sPCrZ68oxLLx99vRw6Kwyqx10hx7Ip1mawY0jlHMXBnSYtdtmdUCENJkKlBApQHwB7P2K4fcT7Hei/Hn3/QbJ9TsH/uh3hp2tJuxrbWFyXZYBY1UR5z9Fzk6JfRtxP48KG5HBDkfPoZLuum0MCMmUCZUqzNC/LWac7K4yWUlgAJbUgpSzd+eoETHB3qthGuntUg8fmdQYr7E9Pc2bwqtfOzRgTZcbTZpevgvepqsgR1umO2Gl2/Xx6ovLaG0i32JvI6IRSyKCSIgHHwcKqLhoZQ6kUVqHiCAI9Rs+4HD1/hT5dT7zYFT6qTSs0K1h1dPRcP+ztoVi9SAbm3xxaAsx+pxrX8otAGifSXmFd Lfw1IRK3 kCkVkbaPBId7H/swbg9l4qPamKXvG1eUwTe3I 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 2/12/24 22:39, Suren Baghdasaryan wrote: > objext objects are created with __GFP_NO_OBJ_EXT flag and therefore have > no corresponding objext themselves (otherwise we would get an infinite > recursion). When freeing these objects their codetag will be empty and > when CONFIG_MEM_ALLOC_PROFILING_DEBUG is enabled this will lead to false > warnings. Introduce CODETAG_EMPTY special codetag value to mark > allocations which intentionally lack codetag to avoid these warnings. > Set objext codetags to CODETAG_EMPTY before freeing to indicate that > the codetag is expected to be empty. > > Signed-off-by: Suren Baghdasaryan > --- > include/linux/alloc_tag.h | 26 ++++++++++++++++++++++++++ > mm/slab.h | 25 +++++++++++++++++++++++++ > mm/slab_common.c | 1 + > mm/slub.c | 8 ++++++++ > 4 files changed, 60 insertions(+) > > diff --git a/include/linux/alloc_tag.h b/include/linux/alloc_tag.h > index 0a5973c4ad77..1f3207097b03 100644 ... > index c4bd0d5348cb..cf332a839bf4 100644 > --- a/mm/slab.h > +++ b/mm/slab.h > @@ -567,6 +567,31 @@ static inline struct slabobj_ext *slab_obj_exts(struct slab *slab) > int alloc_slab_obj_exts(struct slab *slab, struct kmem_cache *s, > gfp_t gfp, bool new_slab); > > + > +#ifdef CONFIG_MEM_ALLOC_PROFILING_DEBUG > + > +static inline void mark_objexts_empty(struct slabobj_ext *obj_exts) > +{ > + struct slabobj_ext *slab_exts; > + struct slab *obj_exts_slab; > + > + obj_exts_slab = virt_to_slab(obj_exts); > + slab_exts = slab_obj_exts(obj_exts_slab); > + if (slab_exts) { > + unsigned int offs = obj_to_index(obj_exts_slab->slab_cache, > + obj_exts_slab, obj_exts); > + /* codetag should be NULL */ > + WARN_ON(slab_exts[offs].ref.ct); > + set_codetag_empty(&slab_exts[offs].ref); > + } > +} > + > +#else /* CONFIG_MEM_ALLOC_PROFILING_DEBUG */ > + > +static inline void mark_objexts_empty(struct slabobj_ext *obj_exts) {} > + > +#endif /* CONFIG_MEM_ALLOC_PROFILING_DEBUG */ > + I assume with alloc_slab_obj_exts() moved to slub.c, mark_objexts_empty() could move there too. > static inline bool need_slab_obj_ext(void) > { > #ifdef CONFIG_MEM_ALLOC_PROFILING > diff --git a/mm/slab_common.c b/mm/slab_common.c > index 21b0b9e9cd9e..d5f75d04ced2 100644 > --- a/mm/slab_common.c > +++ b/mm/slab_common.c > @@ -242,6 +242,7 @@ int alloc_slab_obj_exts(struct slab *slab, struct kmem_cache *s, > * assign slabobj_exts in parallel. In this case the existing > * objcg vector should be reused. > */ > + mark_objexts_empty(vec); > kfree(vec); > return 0; > } > diff --git a/mm/slub.c b/mm/slub.c > index 4d480784942e..1136ff18b4fe 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -1890,6 +1890,14 @@ static inline void free_slab_obj_exts(struct slab *slab) > if (!obj_exts) > return; > > + /* > + * obj_exts was created with __GFP_NO_OBJ_EXT flag, therefore its > + * corresponding extension will be NULL. alloc_tag_sub() will throw a > + * warning if slab has extensions but the extension of an object is > + * NULL, therefore replace NULL with CODETAG_EMPTY to indicate that > + * the extension for obj_exts is expected to be NULL. > + */ > + mark_objexts_empty(obj_exts); > kfree(obj_exts); > slab->obj_exts = 0; > }