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 6500ED59F66 for ; Wed, 6 Nov 2024 18:50:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7D8396B007B; Wed, 6 Nov 2024 13:50:48 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7880F6B0083; Wed, 6 Nov 2024 13:50:48 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 64F706B0085; Wed, 6 Nov 2024 13:50:48 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 3E0A36B007B for ; Wed, 6 Nov 2024 13:50:48 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id D701181478 for ; Wed, 6 Nov 2024 18:50:47 +0000 (UTC) X-FDA: 82756559340.17.CD25DD9 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) by imf03.hostedemail.com (Postfix) with ESMTP id EE5262000E for ; Wed, 6 Nov 2024 18:50:29 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=VvhcY3s+; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf03.hostedemail.com: domain of axelrasmussen@google.com designates 209.85.128.45 as permitted sender) smtp.mailfrom=axelrasmussen@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1730918962; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=VgM0tmQ57n46MJGAaTemYmmN5VLHZvvqiqFDxlachGA=; b=WZ10BEo0QKD9tFiHMdRlVOSGcNRfDn7p7323JOOgYpc17QXzZeLajVgeE0FwJCtx04nzAW ugoukqfrlnqZSl3PjHG9wMIz3WzzCafFgsMT7WoR/oWhUVOWVMQtYryhEw5M8/affa9+Lk PC6LDl0t64dz1KKHX3IHP2Ty75UAphU= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=VvhcY3s+; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf03.hostedemail.com: domain of axelrasmussen@google.com designates 209.85.128.45 as permitted sender) smtp.mailfrom=axelrasmussen@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730918962; a=rsa-sha256; cv=none; b=aWGgucZIgiHS7MnyiN4JSWrF5eKDob13vQG88/iAdkEdWgiyv7o65Duz72KvngXsbNU5cl CfdpLfCsHqH273MER1mCTch/DDjAPENuOJg6W+qd+xCCxc2MlFfgrQwN5EANuXjB08e51n hoIrLH2V+fb7hfZ/8QlRPV8uzSeKqgM= Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-4315a8cff85so235e9.0 for ; Wed, 06 Nov 2024 10:50:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1730919044; x=1731523844; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=VgM0tmQ57n46MJGAaTemYmmN5VLHZvvqiqFDxlachGA=; b=VvhcY3s+46JhVqIhge1pxdvq5D9mQGN4HkqRZVKwWYaxBAeMuCe4Mcogsw6xbCs7+w UK78GlCuZtqSXPqCNypknhTo5IY0RTcc+5Qs6FtiYQdCzUiBDyZdgqumQOoT1Cfnbs9B iZr+OZb7uFx3kPlehRVtAsf5wu/j4EF0oPW6fZBkhn52ZMIoJgksKj3AFktkj+RqQpne fbtcwNgIRuVY1HPCEBhsmNAfiU/Iik0O2dGFgZ4w5QaB8Y/7igHtukgOi5qenuxD62RD YSLVmLD+Rxt/unXkIHLWjAhc3UnEgvk0i2p+0qkRd1kOI49fAt7CZsfuVQS1lFwDCGU4 zpNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730919044; x=1731523844; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=VgM0tmQ57n46MJGAaTemYmmN5VLHZvvqiqFDxlachGA=; b=jSXQoJVeDdRPUa8WLgIWtdXwd0P0NtVLYuqzq+AGt80X/KmOefBRQqWQcPZsP/RjyI KHHjyhHJFxrU9P6d/1EJlxwAGZg+G0nRZvWH7K1H2LMqWH/3c2rBGRE9Ewaa96XPVmla Mzfw9c0nr1qMDeeM9VvN2MwCuoSZ0XMkT5dqjiUJO3qxK1n4U5AN7BhfcqBo2n0xHz2h xChbbbdxlow2PCdJ1kVkSwmABk3oUSUYCZtE8gztdztyA/+jXFwEWNuWHFFrvq5mL9cU EL9wt8r6PFsSv5s05RMmwexiusPWR5YGObTyMK8aUAXgaTjA06RpqEQLNr9uNS08xy3y y4Bg== X-Forwarded-Encrypted: i=1; AJvYcCXfYaQOX4kEPFe1HyYmz2g1N4zhLCbJ3mkxvAmJS97i88A6Hn195u+c5Pv+6TMqwmtZBod4h4o/bw==@kvack.org X-Gm-Message-State: AOJu0YylHm+8vu9S6x8X52ZVRJ7QIvopDWBReKLoPGgksvRDlYZWxuHu sJWE9lNwUdJk28ZsifqxAaBXW1OAn3qYJBhoBttjqlILbFIZX5M+wvJY9sH7B8m8Lr4qq3mtbrB VHqmhfQU1rnvNVhzBZ8e/J7yLVi8i0xZ+g7O/jc+EgYHV8OEgCw== X-Gm-Gg: ASbGncu3y2czldt98DAytURAAFZVGJ02g/NmHcV1kP8IpyKeXUlDaoAcCm/VpTSn9nK bEivXwpNUbvlQ6dvPcyWqOvH+2WwOHXQslqxU8ppugUazCjZ+IUKHhH3KpAo= X-Google-Smtp-Source: AGHT+IG6Gd1ZE97wbITMQhS4uirIYBuluHii9oS0bzobc2I+zFIze3VfC5qFEw2QHyo6owjCisjUdFJkO2+Gz/6Isqs= X-Received: by 2002:a05:600c:692:b0:428:e6eb:1340 with SMTP id 5b1f17b1804b1-432ae553452mr23655e9.4.1730919044105; Wed, 06 Nov 2024 10:50:44 -0800 (PST) MIME-Version: 1.0 References: <20241105113456.95066-2-vbabka@suse.cz> In-Reply-To: <20241105113456.95066-2-vbabka@suse.cz> From: Axel Rasmussen Date: Wed, 6 Nov 2024 10:50:06 -0800 Message-ID: Subject: Re: [PATCH] mm: mmap_lock: check trace_mmap_lock_$type_enabled() instead of regcount To: Vlastimil Babka Cc: Andrew Morton , linux-mm@kvack.org, Tetsuo Handa , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers Content-Type: multipart/alternative; boundary="000000000000c2b489062642fe44" X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: EE5262000E X-Stat-Signature: 7sqzukgcjo4g9wmmpamhjwmgnz5f66wk X-HE-Tag: 1730919029-153997 X-HE-Meta: U2FsdGVkX19xsD/CC3X0ovSxYkvq+eEZYmCqh0tqviYdGQHA8QJESNFMDrSD5ehYigUcWkWJVQaQ6o2EjsYyQJlQCzHh7ZC9HFaaq18JYhy220/TLNcu5cvmY2hU9C+Xf6Pa1A8MfkmVORSYDaehl73+1azU/gYGd0Z8tCK0l+bHFMAxB48IZCVpC8yhPuU6kHmtQ3nI8h2TJ6zapCbEYaEbO5GXf70ar6jW8IlMFm1P6x4TeDPu3qWhrGjXhUipFFvNoD/wxYhEB2ARYAsFCxNa8KTRNQF81DOyhuwfhn9tpkrYEnq9HkeDp8NHOc4D2SkeF43BOiRhDDsT5FJ8muMRZO2zRNnoFMBsR15fZNDH8fHJdis3au5edpkURAJF6iofmXyAi/fppuHS1xBzod3Jj8yN1DAnZRVfzElahGt+TcDHaGU70t68y3H6k4W8rolWDqqy9vRel7XvCbeD2lPh5Js0k99d7vCsP5RjVWgG07usUasqvb/5NeJdf87NqI0srVU1cKU5JAFGSSYXNuDYac4NFfV2hEPr1TSWWyxXfd8D5e+DBGJQrLQhVSM36IjL9pZ2lauaioE7ja/wMNWXV1nEtAWpRQgv+AIIl7e2cmVTP5q3cKwec+HkUKcVuPW7LIPMBEHaseHucGrwPYJkKVQM86yIm90PCvhapmkQdEkB29KgmWVfKEtohOPjk7G8kKk1vGTac2U/uzB/z+l19VtIuRElues9qfZ0kWw7LEsjCcV1GLYj64PIMo+/W1kkmyv5mJ+noYjf6zzIvtpsVh9RQkBHGLBXpwFvr7bqI7MNcLvyNK5oQ+8UsEATadXdd9ClDxiwJhznfvylCazKP6mYuKTT1O0wpNCiTnuGiVklTSG5wShzUaXkuFpkn8GxHst+809P5s+/QCdVySq7ZbI5Y74ACrIT0Z9iL/S4PCMyIqoPMoLBAA+8AD8OZwkkkIPEPXbdC2jCcWa XoFYstiK S1O3pzqphvYUlj9jFqPt8d1FH+UGxONFdna4xC5b6RqPYJ2giMeTkmiTAoDwB6GwsWV13t7GeKeGqWRH6gQylyEEOVhk5poBxCTU1snJ+l5yZcM60JK+omAcDlu3+5kXtuW1OELqkUx2zCDOqsmKKMRqTgrZ/Ev6ejfMFbtxmBJLFLo2/eLOk9XPqk0hTDTpt7gOZsp7nB78y7ooNFsPL9k8v5r4PqYcYalY7sMRrMETNZRjG+mbKsgCWCQ04pOgWh2VcQGyWqo12WMTiS1lgyWG/oVfOa/0awmxcP//1cypZbAs8/XCrfpkh5Hj7P1N028+kX5s/219wTrcCUDy0TNQkaHnSsPyTaHO44qzGBUS8iw6fVsSzbX4RcX7syFF/01Nt/tl9GBMHGXxkk0bTn62FTOk06svcGnMENZn5svqydobJm80IeS1pb+HQnbq+PjpPTozY3Szo7RehyGXXKjPPr2Av1XJumlHQp3kPGMzqp0SDDCFQmCThsWBam8q7zCfIxIZK0Mpd4+beuupdklRZBg2MCXNqdmOtoA4NFxhN0AQ= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000002, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: --000000000000c2b489062642fe44 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This looks like a nice cleanup to me. Thanks Vlastimil! Reviewed-by: Axel Rasmussen On Tue, Nov 5, 2024 at 3:35=E2=80=AFAM Vlastimil Babka wro= te: > Since 7d6be67cfdd4 ("mm: mmap_lock: replace get_memcg_path_buf() with > on-stack buffer") we use trace_mmap_lock_reg()/unreg() only to maintain > an atomic reg_refcount which is checked to avoid performing > get_mm_memcg_path() in case none of the tracepoints using it is enabled. > > This can be achieved directly by putting all the work needed for the > tracepoint behind the trace_mmap_lock_$type_enabled(), as suggested by > Documentation/trace/tracepoints.rst and with the following advantages: > > - uses the tracepoint's static key instead of evaluating a branch > > - the check tracepoint specific, not shared by all of them > > - we can get rid of trace_mmap_lock_reg()/unreg() completely > > Thus use the trace_..._enabled() check and remove unnecessary code. > > Cc: Tetsuo Handa > Cc: Axel Rasmussen > Cc: Steven Rostedt > Cc: Masami Hiramatsu > Cc: Mathieu Desnoyers > Signed-off-by: Vlastimil Babka > --- > include/trace/events/mmap_lock.h | 14 ++++-------- > mm/mmap_lock.c | 39 +++++++------------------------- > 2 files changed, 12 insertions(+), 41 deletions(-) > > diff --git a/include/trace/events/mmap_lock.h > b/include/trace/events/mmap_lock.h > index f2827f98a44f..bc2e3ad787b3 100644 > --- a/include/trace/events/mmap_lock.h > +++ b/include/trace/events/mmap_lock.h > @@ -10,9 +10,6 @@ > > struct mm_struct; > > -extern int trace_mmap_lock_reg(void); > -extern void trace_mmap_lock_unreg(void); > - > DECLARE_EVENT_CLASS(mmap_lock, > > TP_PROTO(struct mm_struct *mm, const char *memcg_path, bool write= ), > @@ -40,16 +37,15 @@ DECLARE_EVENT_CLASS(mmap_lock, > ); > > #define DEFINE_MMAP_LOCK_EVENT(name) = \ > - DEFINE_EVENT_FN(mmap_lock, name, \ > + DEFINE_EVENT(mmap_lock, name, \ > TP_PROTO(struct mm_struct *mm, const char *memcg_path, \ > bool write), \ > - TP_ARGS(mm, memcg_path, write), \ > - trace_mmap_lock_reg, trace_mmap_lock_unreg) > + TP_ARGS(mm, memcg_path, write)) > > DEFINE_MMAP_LOCK_EVENT(mmap_lock_start_locking); > DEFINE_MMAP_LOCK_EVENT(mmap_lock_released); > > -TRACE_EVENT_FN(mmap_lock_acquire_returned, > +TRACE_EVENT(mmap_lock_acquire_returned, > > TP_PROTO(struct mm_struct *mm, const char *memcg_path, bool write= , > bool success), > @@ -76,9 +72,7 @@ TRACE_EVENT_FN(mmap_lock_acquire_returned, > __get_str(memcg_path), > __entry->write ? "true" : "false", > __entry->success ? "true" : "false" > - ), > - > - trace_mmap_lock_reg, trace_mmap_lock_unreg > + ) > ); > > #endif /* _TRACE_MMAP_LOCK_H */ > diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c > index 368b840e7508..f186d57df2c6 100644 > --- a/mm/mmap_lock.c > +++ b/mm/mmap_lock.c > @@ -19,43 +19,23 @@ EXPORT_TRACEPOINT_SYMBOL(mmap_lock_released); > > #ifdef CONFIG_MEMCG > > -static atomic_t reg_refcount; > - > /* > * Size of the buffer for memcg path names. Ignoring stack trace support= , > * trace_events_hist.c uses MAX_FILTER_STR_VAL for this, so we also use > it. > */ > #define MEMCG_PATH_BUF_SIZE MAX_FILTER_STR_VAL > > -int trace_mmap_lock_reg(void) > -{ > - atomic_inc(®_refcount); > - return 0; > -} > - > -void trace_mmap_lock_unreg(void) > -{ > - atomic_dec(®_refcount); > -} > - > -#define TRACE_MMAP_LOCK_EVENT(type, mm, ...) \ > - do { \ > - char buf[MEMCG_PATH_BUF_SIZE]; \ > - get_mm_memcg_path(mm, buf, sizeof(buf)); \ > - trace_mmap_lock_##type(mm, buf, ##__VA_ARGS__); \ > +#define TRACE_MMAP_LOCK_EVENT(type, mm, ...) \ > + do { \ > + if (trace_mmap_lock_##type##_enabled()) { \ > + char buf[MEMCG_PATH_BUF_SIZE]; \ > + get_mm_memcg_path(mm, buf, sizeof(buf)); \ > + trace_mmap_lock_##type(mm, buf, ##__VA_ARGS__); \ > + } \ > } while (0) > > #else /* !CONFIG_MEMCG */ > > -int trace_mmap_lock_reg(void) > -{ > - return 0; > -} > - > -void trace_mmap_lock_unreg(void) > -{ > -} > - > #define TRACE_MMAP_LOCK_EVENT(type, mm, ...) > \ > trace_mmap_lock_##type(mm, "", ##__VA_ARGS__) > > @@ -65,16 +45,13 @@ void trace_mmap_lock_unreg(void) > #ifdef CONFIG_MEMCG > /* > * Write the given mm_struct's memcg path to a buffer. If the path canno= t > be > - * determined or the trace event is being unregistered, empty string is > written. > + * determined, empty string is written. > */ > static void get_mm_memcg_path(struct mm_struct *mm, char *buf, size_t > buflen) > { > struct mem_cgroup *memcg; > > buf[0] =3D '\0'; > - /* No need to get path if no trace event is registered. */ > - if (!atomic_read(®_refcount)) > - return; > memcg =3D get_mem_cgroup_from_mm(mm); > if (memcg =3D=3D NULL) > return; > -- > 2.47.0 > > --000000000000c2b489062642fe44 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
This looks like a nice cleanup to me. Thanks Vlastimil!
Reviewed-by: Axel Rasmussen <axelrasmussen@google.com>

On Tue, Nov 5, 2024= at 3:35=E2=80=AFAM Vlastimil Babka <v= babka@suse.cz> wrote:
Since 7d6be67cfdd4 ("mm: mmap_lock: replace get_memcg_pat= h_buf() with
on-stack buffer") we use trace_mmap_lock_reg()/unreg() only to maintai= n
an atomic reg_refcount which is checked to avoid performing
get_mm_memcg_path() in case none of the tracepoints using it is enabled.
This can be achieved directly by putting all the work needed for the
tracepoint behind the trace_mmap_lock_$type_enabled(), as suggested by
Documentation/trace/tracepoints.rst and with the following advantages:

- uses the tracepoint's static key instead of evaluating a branch

- the check tracepoint specific, not shared by all of them

- we can get rid of trace_mmap_lock_reg()/unreg() completely

Thus use the trace_..._enabled() check and remove unnecessary code.

Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: Axel Rasmussen <axelrasmussen@google.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
---
=C2=A0include/trace/events/mmap_lock.h | 14 ++++--------
=C2=A0mm/mmap_lock.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0| 39 +++++++-------------------------
=C2=A02 files changed, 12 insertions(+), 41 deletions(-)

diff --git a/include/trace/events/mmap_lock.h b/include/trace/events/mmap_l= ock.h
index f2827f98a44f..bc2e3ad787b3 100644
--- a/include/trace/events/mmap_lock.h
+++ b/include/trace/events/mmap_lock.h
@@ -10,9 +10,6 @@

=C2=A0struct mm_struct;

-extern int trace_mmap_lock_reg(void);
-extern void trace_mmap_lock_unreg(void);
-
=C2=A0DECLARE_EVENT_CLASS(mmap_lock,

=C2=A0 =C2=A0 =C2=A0 =C2=A0 TP_PROTO(struct mm_struct *mm, const char *memc= g_path, bool write),
@@ -40,16 +37,15 @@ DECLARE_EVENT_CLASS(mmap_lock,
=C2=A0);

=C2=A0#define DEFINE_MMAP_LOCK_EVENT(name)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 \
-=C2=A0 =C2=A0 =C2=A0 =C2=A0DEFINE_EVENT_FN(mmap_lock, name,=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 \
+=C2=A0 =C2=A0 =C2=A0 =C2=A0DEFINE_EVENT(mmap_lock, name,=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 TP_PROTO(struct mm_= struct *mm, const char *memcg_path,=C2=A0 \
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 bool write),=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 \=
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0TP_ARGS(mm, memcg_p= ath, write),=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0\
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0trace_mmap_lock_reg= , trace_mmap_lock_unreg)
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0TP_ARGS(mm, memcg_p= ath, write))

=C2=A0DEFINE_MMAP_LOCK_EVENT(mmap_lock_start_locking);
=C2=A0DEFINE_MMAP_LOCK_EVENT(mmap_lock_released);

-TRACE_EVENT_FN(mmap_lock_acquire_returned,
+TRACE_EVENT(mmap_lock_acquire_returned,

=C2=A0 =C2=A0 =C2=A0 =C2=A0 TP_PROTO(struct mm_struct *mm, const char *memc= g_path, bool write,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 bool success),
@@ -76,9 +72,7 @@ TRACE_EVENT_FN(mmap_lock_acquire_returned,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 __get_str(memcg_pat= h),
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 __entry->write ?= "true" : "false",
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 __entry->success= ? "true" : "false"
-=C2=A0 =C2=A0 =C2=A0 =C2=A0),
-
-=C2=A0 =C2=A0 =C2=A0 =C2=A0trace_mmap_lock_reg, trace_mmap_lock_unreg
+=C2=A0 =C2=A0 =C2=A0 =C2=A0)
=C2=A0);

=C2=A0#endif /* _TRACE_MMAP_LOCK_H */
diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c
index 368b840e7508..f186d57df2c6 100644
--- a/mm/mmap_lock.c
+++ b/mm/mmap_lock.c
@@ -19,43 +19,23 @@ EXPORT_TRACEPOINT_SYMBOL(mmap_lock_released);

=C2=A0#ifdef CONFIG_MEMCG

-static atomic_t reg_refcount;
-
=C2=A0/*
=C2=A0 * Size of the buffer for memcg path names. Ignoring stack trace supp= ort,
=C2=A0 * trace_events_hist.c uses MAX_FILTER_STR_VAL for this, so we also u= se it.
=C2=A0 */
=C2=A0#define MEMCG_PATH_BUF_SIZE MAX_FILTER_STR_VAL

-int trace_mmap_lock_reg(void)
-{
-=C2=A0 =C2=A0 =C2=A0 =C2=A0atomic_inc(&reg_refcount);
-=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;
-}
-
-void trace_mmap_lock_unreg(void)
-{
-=C2=A0 =C2=A0 =C2=A0 =C2=A0atomic_dec(&reg_refcount);
-}
-
-#define TRACE_MMAP_LOCK_EVENT(type, mm, ...)=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 \
-=C2=A0 =C2=A0 =C2=A0 =C2=A0do {=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 \
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0char buf[MEMCG_PATH= _BUF_SIZE];=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 \=
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0get_mm_memcg_path(m= m, buf, sizeof(buf));=C2=A0 =C2=A0 =C2=A0 =C2=A0 \
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0trace_mmap_lock_##t= ype(mm, buf, ##__VA_ARGS__); \
+#define TRACE_MMAP_LOCK_EVENT(type, mm, ...)=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\
+=C2=A0 =C2=A0 =C2=A0 =C2=A0do {=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 \
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (trace_mmap_lock= _##type##_enabled()) {=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0\
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0char buf[MEMCG_PATH_BUF_SIZE];=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 \
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0get_mm_memcg_path(mm, buf, sizeof(buf));=C2=A0 =C2=A0 =C2=A0 =C2= =A0 \
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0trace_mmap_lock_##type(mm, buf, ##__VA_ARGS__); \
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\
=C2=A0 =C2=A0 =C2=A0 =C2=A0 } while (0)

=C2=A0#else /* !CONFIG_MEMCG */

-int trace_mmap_lock_reg(void)
-{
-=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;
-}
-
-void trace_mmap_lock_unreg(void)
-{
-}
-
=C2=A0#define TRACE_MMAP_LOCK_EVENT(type, mm, ...)=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0\
=C2=A0 =C2=A0 =C2=A0 =C2=A0 trace_mmap_lock_##type(mm, "", ##__VA= _ARGS__)

@@ -65,16 +45,13 @@ void trace_mmap_lock_unreg(void)
=C2=A0#ifdef CONFIG_MEMCG
=C2=A0/*
=C2=A0 * Write the given mm_struct's memcg path to a buffer. If the pat= h cannot be
- * determined or the trace event is being unregistered, empty string is wr= itten.
+ * determined, empty string is written.
=C2=A0 */
=C2=A0static void get_mm_memcg_path(struct mm_struct *mm, char *buf, size_t= buflen)
=C2=A0{
=C2=A0 =C2=A0 =C2=A0 =C2=A0 struct mem_cgroup *memcg;

=C2=A0 =C2=A0 =C2=A0 =C2=A0 buf[0] =3D '\0';
-=C2=A0 =C2=A0 =C2=A0 =C2=A0/* No need to get path if no trace event is reg= istered. */
-=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!atomic_read(&reg_refcount))
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 memcg =3D get_mem_cgroup_from_mm(mm);
=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (memcg =3D=3D NULL)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
--
2.47.0

--000000000000c2b489062642fe44--