Masami Hiramatsu
dee3f77032
tracing: Lock event_mutex before synth_event_mutex
...
[ Upstream commit fc800a10be26017f8f338bc8e500d48e3e6429d9 ]
synthetic event is using synth_event_mutex for protecting
synth_event_list, and event_trigger_write() path acquires
locks as below order.
event_trigger_write(event_mutex)
->trigger_process_regex(trigger_cmd_mutex)
->event_hist_trigger_func(synth_event_mutex)
On the other hand, synthetic event creation and deletion paths
call trace_add_event_call() and trace_remove_event_call()
which acquires event_mutex. In that case, if we keep the
synth_event_mutex locked while registering/unregistering synthetic
events, its dependency will be inversed.
To avoid this issue, current synthetic event is using a 2 phase
process to create/delete events. For example, it searches existing
events under synth_event_mutex to check for event-name conflicts, and
unlocks synth_event_mutex, then registers a new event under event_mutex
locked. Finally, it locks synth_event_mutex and tries to add the
new event to the list. But it can introduce complexity and a chance
for name conflicts.
To solve this simpler, this introduces trace_add_event_call_nolock()
and trace_remove_event_call_nolock() which don't acquire
event_mutex inside. synthetic event can lock event_mutex before
synth_event_mutex to solve the lock dependency issue simpler.
Link: http://lkml.kernel.org/r/154140844377.17322.13781091165954002713.stgit@devbox
Reviewed-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Tested-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-12-05 09:19:49 +01:00
..
blktrace.c
for-4.19/post-20180822
2018-08-22 13:38:05 -07:00
bpf_trace.c
bpf: fix nested bpf tracepoints with per-cpu data
2019-07-03 13:14:48 +02:00
ftrace.c
ftrace: Get a reference counter for the trace_array on filter files
2019-10-17 13:45:40 -07:00
Kconfig
Masami found an off by one bug in the code that keeps "notrace" functions
2018-08-23 13:07:00 -07:00
Makefile
tracing: Allow gcov profiling on only ftrace subsystem
2018-08-21 09:11:49 -04:00
power-traces.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
preemptirq_delay_test.c
tracing: Use trace_clock_local() for looping in preemptirq_delay_test.c
2018-10-17 15:35:33 -04:00
ring_buffer.c
trace: Fix preempt_enable_no_resched() abuse
2019-05-02 09:58:54 +02:00
ring_buffer_benchmark.c
tracing: Add SPDX License format tags to tracing files
2018-08-16 19:08:06 -04:00
rpm-traces.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace.c
tracing: Initialize iter->seq after zeroing in tracing_read_pipe()
2019-11-06 13:06:09 +01:00
trace.h
tracing: Silence GCC 9 array bounds warning
2019-06-25 11:35:52 +08:00
trace_benchmark.c
rcu: Rename cond_resched_rcu_qs() to cond_resched_tasks_rcu_qs()
2018-05-15 10:27:29 -07:00
trace_benchmark.h
tracing: Fix SPDX format headers to use C++ style comments
2018-08-16 19:08:06 -04:00
trace_branch.c
Revert "x86/uaccess, ftrace: Fix ftrace_likely_update() vs. SMAP"
2019-07-03 13:14:41 +02:00
trace_clock.c
tracing: Add SPDX License format tags to tracing files
2018-08-16 19:08:06 -04:00
trace_entries.h
tracing: Fix SPDX format headers to use C++ style comments
2018-08-16 19:08:06 -04:00
trace_event_perf.c
tracing: Fix race in perf_trace_buf initialization
2019-10-29 09:20:03 +01:00
trace_events.c
tracing: Lock event_mutex before synth_event_mutex
2019-12-05 09:19:49 +01:00
trace_events_filter.c
tracing: Avoid memory leak in predicate_parse()
2019-06-09 09:17:14 +02:00
trace_events_filter_test.h
tracing: Fix SPDX format headers to use C++ style comments
2018-08-16 19:08:06 -04:00
trace_events_hist.c
tracing: Lock event_mutex before synth_event_mutex
2019-12-05 09:19:49 +01:00
trace_events_trigger.c
tracing: Fix memory leak in set_trigger_filter()
2018-12-19 19:19:52 +01:00
trace_export.c
tracing: Add trigger file for trace_markers tracefs/ftrace/print
2018-05-29 08:28:53 -04:00
trace_functions.c
tracing: Update stack trace skipping for ORC unwinder
2018-01-23 15:57:00 -05:00
trace_functions_graph.c
tracing/fgraph: Fix set_graph_function from showing interrupts
2018-12-08 12:59:07 +01:00
trace_hwlat.c
tracing/hwlat: Don't ignore outer-loop duration when calculating max_latency
2019-10-17 13:45:39 -07:00
trace_irqsoff.c
tracing/fgraph: Fix set_graph_function from showing interrupts
2018-12-08 12:59:07 +01:00
trace_kdb.c
tracing: Silence GCC 9 array bounds warning
2019-06-25 11:35:52 +08:00
trace_kprobe.c
tracing/kprobes: Check the probe on unloaded module correctly
2018-11-21 09:19:09 +01:00
trace_kprobe_selftest.c
selftest/ftrace: Move kprobe selftest function to separate compile unit
2018-07-30 18:41:04 -04:00
trace_kprobe_selftest.h
tracing: Fix SPDX format headers to use C++ style comments
2018-08-16 19:08:06 -04:00
trace_mmiotrace.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_nop.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_output.c
tracing: Add SPDX License format tags to tracing files
2018-08-16 19:08:06 -04:00
trace_output.h
tracing: Fix SPDX format headers to use C++ style comments
2018-08-16 19:08:06 -04:00
trace_preemptirq.c
tracing: More reverting of "tracing: Centralize preemptirq tracepoints and unify their usage"
2018-08-10 15:12:00 -04:00
trace_printk.c
tracing: Add SPDX License format tags to tracing files
2018-08-16 19:08:06 -04:00
trace_probe.c
tracing: Add SPDX License format tags to tracing files
2018-08-16 19:08:06 -04:00
trace_probe.h
tracing: Add SPDX License format tags to tracing files
2018-08-16 19:08:06 -04:00
trace_sched_switch.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_sched_wakeup.c
tracing/fgraph: Fix set_graph_function from showing interrupts
2018-12-08 12:59:07 +01:00
trace_selftest.c
Tracing updates for 4.15:
2017-11-17 14:58:01 -08:00
trace_selftest_dynamic.c
ftrace: Mark function tracer test functions noinline/noclone
2018-01-23 15:57:29 -05:00
trace_seq.c
tracing: Add SPDX License format tags to tracing files
2018-08-16 19:08:06 -04:00
trace_stack.c
tracing: Fix the file mode of stack tracer
2018-05-03 11:58:05 -04:00
trace_stat.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
trace_stat.h
tracing: Fix SPDX format headers to use C++ style comments
2018-08-16 19:08:06 -04:00
trace_syscalls.c
Tracing updates for 4.15:
2017-11-17 14:58:01 -08:00
trace_uprobe.c
tracing/uprobes: Fix output for multiple string arguments
2019-02-20 10:25:48 +01:00
tracing_map.c
tracing: Add SPDX License format tags to tracing files
2018-08-16 19:08:06 -04:00
tracing_map.h
tracing: Fix SPDX format headers to use C++ style comments
2018-08-16 19:08:06 -04:00