From nobody Sun Feb 8 22:49:14 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EBE0176034 for ; Thu, 26 Dec 2024 14:38:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735223918; cv=none; b=RZ1yKUKohtAorPnC7ZV1iDey6bBlXzUdRU/hVC6F1iBY5x+VMaFGZlT1Tdxs5DgrSNlgl54qQENsuXi36AOpwtpCiB5v/1j5WtSDu8SNBhbzjSCgcET8vhFcSSLNI/oxpjfcYZPgZTo41qWkC36Y/TeOiQfcoDXNZgTMRiX0nFU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735223918; c=relaxed/simple; bh=KMNOELaMzfHCdffhh2BTLClpkyk7LJCFzSVFhsY/8dU=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=SfiBysUkB6h0ttfOxIbg1NADnWKRnXcl7mKrzEUCT7k1EtjItkdu3FadtDU71IdgR2/pKs64sVlk5j4+L6AL62pBgmYw30vJV3lir2BeU6Jdr/0j3V5QlPA3sLtYS6JA3x6X0dTxPeBHCws0+wAcBHsU8swVP8PLLgrpLLH+u9A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8001FC4CEEA; Thu, 26 Dec 2024 14:38:37 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.98) (envelope-from ) id 1tQp1U-0000000G1tJ-1MOv; Thu, 26 Dec 2024 09:39:36 -0500 Message-ID: <20241226143936.175741842@goodmis.org> User-Agent: quilt/0.68 Date: Thu, 26 Dec 2024 09:39:23 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton , Peter Zijlstra Subject: [for-next][PATCH 09/15] tracing: Switch trace_events_filter.c code over to use guard() References: <20241226143914.397394975@goodmis.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Steven Rostedt There are a couple functions in trace_events_filter.c that have "goto out" or equivalent on error in order to release locks that were taken. This can be error prone or just simply make the code more complex. Switch every location that ends with unlocking a mutex on error over to using the guard(mutex)() infrastructure to let the compiler worry about releasing locks. This makes the code easier to read and understand. Cc: Masami Hiramatsu Cc: Mark Rutland Cc: Mathieu Desnoyers Cc: Andrew Morton Cc: Peter Zijlstra Link: https://lore.kernel.org/20241219201346.200737679@goodmis.org Signed-off-by: Steven Rostedt (Google) --- kernel/trace/trace_events_filter.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events= _filter.c index 78051de581e7..0993dfc1c5c1 100644 --- a/kernel/trace/trace_events_filter.c +++ b/kernel/trace/trace_events_filter.c @@ -2405,13 +2405,11 @@ int apply_subsystem_event_filter(struct trace_subsy= stem_dir *dir, struct event_filter *filter =3D NULL; int err =3D 0; =20 - mutex_lock(&event_mutex); + guard(mutex)(&event_mutex); =20 /* Make sure the system still has events */ - if (!dir->nr_events) { - err =3D -ENODEV; - goto out_unlock; - } + if (!dir->nr_events) + return -ENODEV; =20 if (!strcmp(strstrip(filter_string), "0")) { filter_free_subsystem_preds(dir, tr); @@ -2422,7 +2420,7 @@ int apply_subsystem_event_filter(struct trace_subsyst= em_dir *dir, tracepoint_synchronize_unregister(); filter_free_subsystem_filters(dir, tr); __free_filter(filter); - goto out_unlock; + return 0; } =20 err =3D create_system_filter(dir, filter_string, &filter); @@ -2434,8 +2432,6 @@ int apply_subsystem_event_filter(struct trace_subsyst= em_dir *dir, __free_filter(system->filter); system->filter =3D filter; } -out_unlock: - mutex_unlock(&event_mutex); =20 return err; } @@ -2612,17 +2608,15 @@ int ftrace_profile_set_filter(struct perf_event *ev= ent, int event_id, struct event_filter *filter =3D NULL; struct trace_event_call *call; =20 - mutex_lock(&event_mutex); + guard(mutex)(&event_mutex); =20 call =3D event->tp_event; =20 - err =3D -EINVAL; if (!call) - goto out_unlock; + return -EINVAL; =20 - err =3D -EEXIST; if (event->filter) - goto out_unlock; + return -EEXIST; =20 err =3D create_filter(NULL, call, filter_str, false, &filter); if (err) @@ -2637,9 +2631,6 @@ int ftrace_profile_set_filter(struct perf_event *even= t, int event_id, if (err || ftrace_event_is_function(call)) __free_filter(filter); =20 -out_unlock: - mutex_unlock(&event_mutex); - return err; } =20 --=20 2.45.2