diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/trace/trace.c | 16 | ||||
-rw-r--r-- | kernel/trace/trace.h | 1 | ||||
-rw-r--r-- | kernel/trace/trace_functions_graph.c | 6 |
3 files changed, 9 insertions, 14 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 2198a630ef58..87fb9801bd9e 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c | |||
@@ -100,8 +100,6 @@ static DEFINE_PER_CPU(bool, trace_cmdline_save); | |||
100 | */ | 100 | */ |
101 | static int tracing_disabled = 1; | 101 | static int tracing_disabled = 1; |
102 | 102 | ||
103 | DEFINE_PER_CPU(int, ftrace_cpu_disabled); | ||
104 | |||
105 | cpumask_var_t __read_mostly tracing_buffer_mask; | 103 | cpumask_var_t __read_mostly tracing_buffer_mask; |
106 | 104 | ||
107 | /* | 105 | /* |
@@ -1775,10 +1773,6 @@ trace_function(struct trace_array *tr, | |||
1775 | struct ring_buffer_event *event; | 1773 | struct ring_buffer_event *event; |
1776 | struct ftrace_entry *entry; | 1774 | struct ftrace_entry *entry; |
1777 | 1775 | ||
1778 | /* If we are reading the ring buffer, don't trace */ | ||
1779 | if (unlikely(__this_cpu_read(ftrace_cpu_disabled))) | ||
1780 | return; | ||
1781 | |||
1782 | event = trace_buffer_lock_reserve(buffer, TRACE_FN, sizeof(*entry), | 1776 | event = trace_buffer_lock_reserve(buffer, TRACE_FN, sizeof(*entry), |
1783 | flags, pc); | 1777 | flags, pc); |
1784 | if (!event) | 1778 | if (!event) |
@@ -4554,6 +4548,8 @@ out: | |||
4554 | return ret; | 4548 | return ret; |
4555 | } | 4549 | } |
4556 | 4550 | ||
4551 | #ifdef CONFIG_TRACER_MAX_TRACE | ||
4552 | |||
4557 | static ssize_t | 4553 | static ssize_t |
4558 | tracing_max_lat_read(struct file *filp, char __user *ubuf, | 4554 | tracing_max_lat_read(struct file *filp, char __user *ubuf, |
4559 | size_t cnt, loff_t *ppos) | 4555 | size_t cnt, loff_t *ppos) |
@@ -4568,6 +4564,8 @@ tracing_max_lat_write(struct file *filp, const char __user *ubuf, | |||
4568 | return tracing_nsecs_write(filp->private_data, ubuf, cnt, ppos); | 4564 | return tracing_nsecs_write(filp->private_data, ubuf, cnt, ppos); |
4569 | } | 4565 | } |
4570 | 4566 | ||
4567 | #endif | ||
4568 | |||
4571 | static int tracing_open_pipe(struct inode *inode, struct file *filp) | 4569 | static int tracing_open_pipe(struct inode *inode, struct file *filp) |
4572 | { | 4570 | { |
4573 | struct trace_array *tr = inode->i_private; | 4571 | struct trace_array *tr = inode->i_private; |
@@ -5469,12 +5467,14 @@ static const struct file_operations tracing_thresh_fops = { | |||
5469 | .llseek = generic_file_llseek, | 5467 | .llseek = generic_file_llseek, |
5470 | }; | 5468 | }; |
5471 | 5469 | ||
5470 | #ifdef CONFIG_TRACER_MAX_TRACE | ||
5472 | static const struct file_operations tracing_max_lat_fops = { | 5471 | static const struct file_operations tracing_max_lat_fops = { |
5473 | .open = tracing_open_generic, | 5472 | .open = tracing_open_generic, |
5474 | .read = tracing_max_lat_read, | 5473 | .read = tracing_max_lat_read, |
5475 | .write = tracing_max_lat_write, | 5474 | .write = tracing_max_lat_write, |
5476 | .llseek = generic_file_llseek, | 5475 | .llseek = generic_file_llseek, |
5477 | }; | 5476 | }; |
5477 | #endif | ||
5478 | 5478 | ||
5479 | static const struct file_operations set_tracer_fops = { | 5479 | static const struct file_operations set_tracer_fops = { |
5480 | .open = tracing_open_generic, | 5480 | .open = tracing_open_generic, |
@@ -6847,7 +6847,9 @@ struct dentry *tracing_init_dentry(void) | |||
6847 | if (tr->dir) | 6847 | if (tr->dir) |
6848 | return NULL; | 6848 | return NULL; |
6849 | 6849 | ||
6850 | if (WARN_ON(!debugfs_initialized())) | 6850 | if (WARN_ON(!tracefs_initialized()) || |
6851 | (IS_ENABLED(CONFIG_DEBUG_FS) && | ||
6852 | WARN_ON(!debugfs_initialized()))) | ||
6851 | return ERR_PTR(-ENODEV); | 6853 | return ERR_PTR(-ENODEV); |
6852 | 6854 | ||
6853 | /* | 6855 | /* |
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index dd7620802e72..919d9d07686f 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h | |||
@@ -667,7 +667,6 @@ extern int DYN_FTRACE_TEST_NAME2(void); | |||
667 | 667 | ||
668 | extern bool ring_buffer_expanded; | 668 | extern bool ring_buffer_expanded; |
669 | extern bool tracing_selftest_disabled; | 669 | extern bool tracing_selftest_disabled; |
670 | DECLARE_PER_CPU(int, ftrace_cpu_disabled); | ||
671 | 670 | ||
672 | #ifdef CONFIG_FTRACE_STARTUP_TEST | 671 | #ifdef CONFIG_FTRACE_STARTUP_TEST |
673 | extern int trace_selftest_startup_function(struct tracer *trace, | 672 | extern int trace_selftest_startup_function(struct tracer *trace, |
diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c index 92382af7a213..a663cbb84107 100644 --- a/kernel/trace/trace_functions_graph.c +++ b/kernel/trace/trace_functions_graph.c | |||
@@ -288,9 +288,6 @@ int __trace_graph_entry(struct trace_array *tr, | |||
288 | struct ring_buffer *buffer = tr->trace_buffer.buffer; | 288 | struct ring_buffer *buffer = tr->trace_buffer.buffer; |
289 | struct ftrace_graph_ent_entry *entry; | 289 | struct ftrace_graph_ent_entry *entry; |
290 | 290 | ||
291 | if (unlikely(__this_cpu_read(ftrace_cpu_disabled))) | ||
292 | return 0; | ||
293 | |||
294 | event = trace_buffer_lock_reserve(buffer, TRACE_GRAPH_ENT, | 291 | event = trace_buffer_lock_reserve(buffer, TRACE_GRAPH_ENT, |
295 | sizeof(*entry), flags, pc); | 292 | sizeof(*entry), flags, pc); |
296 | if (!event) | 293 | if (!event) |
@@ -403,9 +400,6 @@ void __trace_graph_return(struct trace_array *tr, | |||
403 | struct ring_buffer *buffer = tr->trace_buffer.buffer; | 400 | struct ring_buffer *buffer = tr->trace_buffer.buffer; |
404 | struct ftrace_graph_ret_entry *entry; | 401 | struct ftrace_graph_ret_entry *entry; |
405 | 402 | ||
406 | if (unlikely(__this_cpu_read(ftrace_cpu_disabled))) | ||
407 | return; | ||
408 | |||
409 | event = trace_buffer_lock_reserve(buffer, TRACE_GRAPH_RET, | 403 | event = trace_buffer_lock_reserve(buffer, TRACE_GRAPH_RET, |
410 | sizeof(*entry), flags, pc); | 404 | sizeof(*entry), flags, pc); |
411 | if (!event) | 405 | if (!event) |