]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
tracing/eprobe: Adopt guard() and scoped_guard()
authorMasami Hiramatsu (Google) <mhiramat@kernel.org>
Fri, 29 Nov 2024 16:48:30 +0000 (01:48 +0900)
committerMasami Hiramatsu (Google) <mhiramat@kernel.org>
Fri, 10 Jan 2025 00:00:12 +0000 (09:00 +0900)
Use guard() or scoped_guard() in eprobe events for critical sections
rather than discrete lock/unlock pairs.

Link: https://lore.kernel.org/all/173289890996.73724.17421347964110362029.stgit@devnote2/
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
kernel/trace/trace_eprobe.c

index be8be0c1aaf0f17d80ba228c06e1ac560b38b90c..82fd637cfc19eae447e8a7cb056f717d4407d5eb 100644 (file)
@@ -917,10 +917,10 @@ static int __trace_eprobe_create(int argc, const char *argv[])
                goto error;
        }
 
-       mutex_lock(&event_mutex);
-       event_call = find_and_get_event(sys_name, sys_event);
-       ep = alloc_event_probe(group, event, event_call, argc - 2);
-       mutex_unlock(&event_mutex);
+       scoped_guard(mutex, &event_mutex) {
+               event_call = find_and_get_event(sys_name, sys_event);
+               ep = alloc_event_probe(group, event, event_call, argc - 2);
+       }
 
        if (IS_ERR(ep)) {
                ret = PTR_ERR(ep);
@@ -952,23 +952,21 @@ static int __trace_eprobe_create(int argc, const char *argv[])
        if (ret < 0)
                goto error;
        init_trace_eprobe_call(ep);
-       mutex_lock(&event_mutex);
-       ret = trace_probe_register_event_call(&ep->tp);
-       if (ret) {
-               if (ret == -EEXIST) {
-                       trace_probe_log_set_index(0);
-                       trace_probe_log_err(0, EVENT_EXIST);
+       scoped_guard(mutex, &event_mutex) {
+               ret = trace_probe_register_event_call(&ep->tp);
+               if (ret) {
+                       if (ret == -EEXIST) {
+                               trace_probe_log_set_index(0);
+                               trace_probe_log_err(0, EVENT_EXIST);
+                       }
+                       goto error;
+               }
+               ret = dyn_event_add(&ep->devent, &ep->tp.event->call);
+               if (ret < 0) {
+                       trace_probe_unregister_event_call(&ep->tp);
+                       goto error;
                }
-               mutex_unlock(&event_mutex);
-               goto error;
-       }
-       ret = dyn_event_add(&ep->devent, &ep->tp.event->call);
-       if (ret < 0) {
-               trace_probe_unregister_event_call(&ep->tp);
-               mutex_unlock(&event_mutex);
-               goto error;
        }
-       mutex_unlock(&event_mutex);
        return ret;
 parse_error:
        ret = -EINVAL;