aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/trace/trace.c2
-rw-r--r--kernel/trace/trace.h1
-rw-r--r--kernel/trace/trace_events.c17
3 files changed, 5 insertions, 15 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index fa7d813b04c6..94f1b9124939 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -4156,7 +4156,7 @@ bool tracing_is_disabled(void)
4156 * Open and update trace_array ref count. 4156 * Open and update trace_array ref count.
4157 * Must have the current trace_array passed to it. 4157 * Must have the current trace_array passed to it.
4158 */ 4158 */
4159static int tracing_open_generic_tr(struct inode *inode, struct file *filp) 4159int tracing_open_generic_tr(struct inode *inode, struct file *filp)
4160{ 4160{
4161 struct trace_array *tr = inode->i_private; 4161 struct trace_array *tr = inode->i_private;
4162 4162
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index f801d154ff6a..854dbf4050f8 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -681,6 +681,7 @@ void tracing_reset_online_cpus(struct trace_buffer *buf);
681void tracing_reset_current(int cpu); 681void tracing_reset_current(int cpu);
682void tracing_reset_all_online_cpus(void); 682void tracing_reset_all_online_cpus(void);
683int tracing_open_generic(struct inode *inode, struct file *filp); 683int tracing_open_generic(struct inode *inode, struct file *filp);
684int tracing_open_generic_tr(struct inode *inode, struct file *filp);
684bool tracing_is_disabled(void); 685bool tracing_is_disabled(void);
685bool tracer_tracing_is_on(struct trace_array *tr); 686bool tracer_tracing_is_on(struct trace_array *tr);
686void tracer_tracing_on(struct trace_array *tr); 687void tracer_tracing_on(struct trace_array *tr);
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index b89cdfe20bc1..9613a757c902 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -1440,28 +1440,17 @@ static int system_tr_open(struct inode *inode, struct file *filp)
1440 struct trace_array *tr = inode->i_private; 1440 struct trace_array *tr = inode->i_private;
1441 int ret; 1441 int ret;
1442 1442
1443 if (tracing_is_disabled())
1444 return -ENODEV;
1445
1446 if (trace_array_get(tr) < 0)
1447 return -ENODEV;
1448
1449 /* Make a temporary dir that has no system but points to tr */ 1443 /* Make a temporary dir that has no system but points to tr */
1450 dir = kzalloc(sizeof(*dir), GFP_KERNEL); 1444 dir = kzalloc(sizeof(*dir), GFP_KERNEL);
1451 if (!dir) { 1445 if (!dir)
1452 trace_array_put(tr);
1453 return -ENOMEM; 1446 return -ENOMEM;
1454 }
1455
1456 dir->tr = tr;
1457 1447
1458 ret = tracing_open_generic(inode, filp); 1448 ret = tracing_open_generic_tr(inode, filp);
1459 if (ret < 0) { 1449 if (ret < 0) {
1460 trace_array_put(tr);
1461 kfree(dir); 1450 kfree(dir);
1462 return ret; 1451 return ret;
1463 } 1452 }
1464 1453 dir->tr = tr;
1465 filp->private_data = dir; 1454 filp->private_data = dir;
1466 1455
1467 return 0; 1456 return 0;