diff options
-rw-r--r-- | kernel/trace/trace.c | 2 | ||||
-rw-r--r-- | kernel/trace/trace.h | 1 | ||||
-rw-r--r-- | kernel/trace/trace_events.c | 17 |
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 | */ |
4159 | static int tracing_open_generic_tr(struct inode *inode, struct file *filp) | 4159 | int 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); | |||
681 | void tracing_reset_current(int cpu); | 681 | void tracing_reset_current(int cpu); |
682 | void tracing_reset_all_online_cpus(void); | 682 | void tracing_reset_all_online_cpus(void); |
683 | int tracing_open_generic(struct inode *inode, struct file *filp); | 683 | int tracing_open_generic(struct inode *inode, struct file *filp); |
684 | int tracing_open_generic_tr(struct inode *inode, struct file *filp); | ||
684 | bool tracing_is_disabled(void); | 685 | bool tracing_is_disabled(void); |
685 | bool tracer_tracing_is_on(struct trace_array *tr); | 686 | bool tracer_tracing_is_on(struct trace_array *tr); |
686 | void tracer_tracing_on(struct trace_array *tr); | 687 | void 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; |