1

Fixes for function graph:

- Fix missing mutex unlock in error path of register_ftrace_graph()
 
   A previous fix added a return on an error path and forgot to unlock the
   mutex. Instead of dealing with error paths, use guard(mutex) as the mutex
   is just released at the exit of the function anyway. Other functions
   in this file should be updated with this, but that's a cleanup and not
   a fix.
 
 - Change cpuhp setup name to be consistent with other cpuhp states
 
   The same fix that the above patch fixes added a cpuhp_setup_state() call
   with the name of "fgraph_idle_init". I was informed that it should instead
   be something like: "fgraph:online". Update that too.
 -----BEGIN PGP SIGNATURE-----
 
 iIoEABYIADIWIQRRSw7ePDh/lE+zeZMp5XQQmuv6qgUCZxydTRQccm9zdGVkdEBn
 b29kbWlzLm9yZwAKCRAp5XQQmuv6qsE/APoDcsqqaDJvQ0OsMqVaPdHoj2IUkU4M
 yueb6U/Kyq1m4wEA259W1PZuQlM0Vo0yJM1w2YIAH18UpO09ZroLnbWoUAc=
 =2sS+
 -----END PGP SIGNATURE-----

Merge tag 'ftrace-v6.12-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace

Pull ftrace fixes from Steven Rostedt:

 - Fix missing mutex unlock in error path of register_ftrace_graph()

   A previous fix added a return on an error path and forgot to unlock
   the mutex. Instead of dealing with error paths, use guard(mutex) as
   the mutex is just released at the exit of the function anyway. Other
   functions in this file should be updated with this, but that's a
   cleanup and not a fix.

 - Change cpuhp setup name to be consistent with other cpuhp states

   The same fix that the above patch fixes added a cpuhp_setup_state()
   call with the name of "fgraph_idle_init". I was informed that it
   should instead be something like: "fgraph:online". Update that too.

* tag 'ftrace-v6.12-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
  fgraph: Change the name of cpuhp state to "fgraph:online"
  fgraph: Fix missing unlock in register_ftrace_graph()
This commit is contained in:
Linus Torvalds 2024-10-27 08:56:22 -10:00
commit f69a1accfe

View File

@ -1252,10 +1252,10 @@ int register_ftrace_graph(struct fgraph_ops *gops)
int ret = 0; int ret = 0;
int i = -1; int i = -1;
mutex_lock(&ftrace_lock); guard(mutex)(&ftrace_lock);
if (!fgraph_initialized) { if (!fgraph_initialized) {
ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "fgraph_idle_init", ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "fgraph:online",
fgraph_cpu_init, NULL); fgraph_cpu_init, NULL);
if (ret < 0) { if (ret < 0) {
pr_warn("fgraph: Error to init cpu hotplug support\n"); pr_warn("fgraph: Error to init cpu hotplug support\n");
@ -1273,10 +1273,8 @@ int register_ftrace_graph(struct fgraph_ops *gops)
} }
i = fgraph_lru_alloc_index(); i = fgraph_lru_alloc_index();
if (i < 0 || WARN_ON_ONCE(fgraph_array[i] != &fgraph_stub)) { if (i < 0 || WARN_ON_ONCE(fgraph_array[i] != &fgraph_stub))
ret = -ENOSPC; return -ENOSPC;
goto out;
}
gops->idx = i; gops->idx = i;
ftrace_graph_active++; ftrace_graph_active++;
@ -1313,8 +1311,6 @@ error:
gops->saved_func = NULL; gops->saved_func = NULL;
fgraph_lru_release_index(i); fgraph_lru_release_index(i);
} }
out:
mutex_unlock(&ftrace_lock);
return ret; return ret;
} }