diff options
-rw-r--r-- | kernel/trace/trace_events.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 043f833246a0..f919a2e21bf3 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c | |||
@@ -1062,6 +1062,9 @@ static int subsystem_open(struct inode *inode, struct file *filp) | |||
1062 | struct trace_array *tr; | 1062 | struct trace_array *tr; |
1063 | int ret; | 1063 | int ret; |
1064 | 1064 | ||
1065 | if (tracing_is_disabled()) | ||
1066 | return -ENODEV; | ||
1067 | |||
1065 | /* Make sure the system still exists */ | 1068 | /* Make sure the system still exists */ |
1066 | mutex_lock(&trace_types_lock); | 1069 | mutex_lock(&trace_types_lock); |
1067 | mutex_lock(&event_mutex); | 1070 | mutex_lock(&event_mutex); |
@@ -1108,6 +1111,9 @@ static int system_tr_open(struct inode *inode, struct file *filp) | |||
1108 | struct trace_array *tr = inode->i_private; | 1111 | struct trace_array *tr = inode->i_private; |
1109 | int ret; | 1112 | int ret; |
1110 | 1113 | ||
1114 | if (tracing_is_disabled()) | ||
1115 | return -ENODEV; | ||
1116 | |||
1111 | if (trace_array_get(tr) < 0) | 1117 | if (trace_array_get(tr) < 0) |
1112 | return -ENODEV; | 1118 | return -ENODEV; |
1113 | 1119 | ||
@@ -1124,11 +1130,12 @@ static int system_tr_open(struct inode *inode, struct file *filp) | |||
1124 | if (ret < 0) { | 1130 | if (ret < 0) { |
1125 | trace_array_put(tr); | 1131 | trace_array_put(tr); |
1126 | kfree(dir); | 1132 | kfree(dir); |
1133 | return ret; | ||
1127 | } | 1134 | } |
1128 | 1135 | ||
1129 | filp->private_data = dir; | 1136 | filp->private_data = dir; |
1130 | 1137 | ||
1131 | return ret; | 1138 | return 0; |
1132 | } | 1139 | } |
1133 | 1140 | ||
1134 | static int subsystem_release(struct inode *inode, struct file *file) | 1141 | static int subsystem_release(struct inode *inode, struct file *file) |