All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Peter Zijlstra <peterz@infradead.org>
Subject: [for-next][PATCH 11/15] tracing: Switch trace_osnoise.c code over to use guard() and __free()
Date: Thu, 26 Dec 2024 09:39:25 -0500	[thread overview]
Message-ID: <20241226143936.513295476@goodmis.org> (raw)
In-Reply-To: 20241226143914.397394975@goodmis.org

From: Steven Rostedt <rostedt@goodmis.org>

The osnoise_hotplug_workfn() grabs two mutexes and cpu_read_lock(). It has
various gotos to handle unlocking them. Switch them over to guard() and
let the compiler worry about it.

The osnoise_cpus_read() has a temporary mask_str allocated and there's
some gotos to make sure it gets freed on error paths. Switch that over to
__free() to let the compiler worry about it.

Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/20241225222931.517329690@goodmis.org
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
---
 kernel/trace/trace_osnoise.c | 40 ++++++++++++------------------------
 1 file changed, 13 insertions(+), 27 deletions(-)

diff --git a/kernel/trace/trace_osnoise.c b/kernel/trace/trace_osnoise.c
index b9f96c77527d..b25c30b05dd0 100644
--- a/kernel/trace/trace_osnoise.c
+++ b/kernel/trace/trace_osnoise.c
@@ -2083,26 +2083,21 @@ static void osnoise_hotplug_workfn(struct work_struct *dummy)
 {
 	unsigned int cpu = smp_processor_id();
 
-	mutex_lock(&trace_types_lock);
+	guard(mutex)(&trace_types_lock);
 
 	if (!osnoise_has_registered_instances())
-		goto out_unlock_trace;
+		return;
 
-	mutex_lock(&interface_lock);
-	cpus_read_lock();
+	guard(mutex)(&interface_lock);
+	guard(cpus_read_lock)();
 
 	if (!cpu_online(cpu))
-		goto out_unlock;
+		return;
+
 	if (!cpumask_test_cpu(cpu, &osnoise_cpumask))
-		goto out_unlock;
+		return;
 
 	start_kthread(cpu);
-
-out_unlock:
-	cpus_read_unlock();
-	mutex_unlock(&interface_lock);
-out_unlock_trace:
-	mutex_unlock(&trace_types_lock);
 }
 
 static DECLARE_WORK(osnoise_hotplug_work, osnoise_hotplug_workfn);
@@ -2300,31 +2295,22 @@ static ssize_t
 osnoise_cpus_read(struct file *filp, char __user *ubuf, size_t count,
 		  loff_t *ppos)
 {
-	char *mask_str;
+	char *mask_str __free(kfree) = NULL;
 	int len;
 
-	mutex_lock(&interface_lock);
+	guard(mutex)(&interface_lock);
 
 	len = snprintf(NULL, 0, "%*pbl\n", cpumask_pr_args(&osnoise_cpumask)) + 1;
 	mask_str = kmalloc(len, GFP_KERNEL);
-	if (!mask_str) {
-		count = -ENOMEM;
-		goto out_unlock;
-	}
+	if (!mask_str)
+		return -ENOMEM;
 
 	len = snprintf(mask_str, len, "%*pbl\n", cpumask_pr_args(&osnoise_cpumask));
-	if (len >= count) {
-		count = -EINVAL;
-		goto out_free;
-	}
+	if (len >= count)
+		return -EINVAL;
 
 	count = simple_read_from_buffer(ubuf, count, ppos, mask_str, len);
 
-out_free:
-	kfree(mask_str);
-out_unlock:
-	mutex_unlock(&interface_lock);
-
 	return count;
 }
 
-- 
2.45.2



  parent reply	other threads:[~2024-12-26 14:38 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-26 14:39 [for-next][PATCH 00/15] tracing: Updates for v6.14 Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 01/15] tracing: Switch trace.c code over to use guard() Steven Rostedt
2024-12-28 10:40   ` Markus Elfring
2024-12-26 14:39 ` [for-next][PATCH 02/15] tracing: Return -EINVAL if a boot tracer tries to enable the mmiotracer at boot Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 03/15] tracing: Have event_enable_write() just return error on error Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 04/15] tracing: Simplify event_enable_func() goto out_free logic Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 05/15] tracing: Simplify event_enable_func() goto_reg logic Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 06/15] tracing: Switch trace_events.c code over to use guard() Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 07/15] tracing: Switch trace_events_hist.c " Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 08/15] tracing: Switch trace_events_trigger.c " Steven Rostedt
2024-12-28 13:52   ` Markus Elfring
2024-12-26 14:39 ` [for-next][PATCH 09/15] tracing: Switch trace_events_filter.c " Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 10/15] tracing: Switch trace_events_synth.c " Steven Rostedt
2024-12-26 14:39 ` Steven Rostedt [this message]
2024-12-28 14:01   ` [for-next][PATCH 11/15] tracing: Switch trace_osnoise.c code over to use guard() and __free() Markus Elfring
2024-12-26 14:39 ` [for-next][PATCH 12/15] tracing: Switch trace_stack.c code over to use guard() Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 13/15] tracing: Switch trace_stat.c " Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 14/15] tracing/string: Create and use __free(argv_free) in trace_dynevent.c Steven Rostedt
2024-12-26 14:39 ` [for-next][PATCH 15/15] tracepoint: Reduce duplication of __DO_TRACE_CALL Steven Rostedt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241226143936.513295476@goodmis.org \
    --to=rostedt@goodmis.org \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mhiramat@kernel.org \
    --cc=peterz@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.