diff options
Diffstat (limited to 'kernel/trace/trace_event_perf.c')
| -rw-r--r-- | kernel/trace/trace_event_perf.c | 7 | 
1 files changed, 4 insertions, 3 deletions
diff --git a/kernel/trace/trace_event_perf.c b/kernel/trace/trace_event_perf.c index a114549720d6..61e3a2620fa3 100644 --- a/kernel/trace/trace_event_perf.c +++ b/kernel/trace/trace_event_perf.c @@ -157,7 +157,7 @@ static void perf_trace_event_unreg(struct perf_event *p_event)  	int i;  	if (--tp_event->perf_refcount > 0) -		goto out; +		return;  	tp_event->class->reg(tp_event, TRACE_REG_PERF_UNREGISTER, NULL); @@ -176,8 +176,6 @@ static void perf_trace_event_unreg(struct perf_event *p_event)  			perf_trace_buf[i] = NULL;  		}  	} -out: -	trace_event_put_ref(tp_event);  }  static int perf_trace_event_open(struct perf_event *p_event) @@ -241,6 +239,7 @@ void perf_trace_destroy(struct perf_event *p_event)  	mutex_lock(&event_mutex);  	perf_trace_event_close(p_event);  	perf_trace_event_unreg(p_event); +	trace_event_put_ref(p_event->tp_event);  	mutex_unlock(&event_mutex);  } @@ -292,6 +291,7 @@ void perf_kprobe_destroy(struct perf_event *p_event)  	mutex_lock(&event_mutex);  	perf_trace_event_close(p_event);  	perf_trace_event_unreg(p_event); +	trace_event_put_ref(p_event->tp_event);  	mutex_unlock(&event_mutex);  	destroy_local_trace_kprobe(p_event->tp_event); @@ -347,6 +347,7 @@ void perf_uprobe_destroy(struct perf_event *p_event)  	mutex_lock(&event_mutex);  	perf_trace_event_close(p_event);  	perf_trace_event_unreg(p_event); +	trace_event_put_ref(p_event->tp_event);  	mutex_unlock(&event_mutex);  	destroy_local_trace_uprobe(p_event->tp_event);  }  | 
