aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/perf_event.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/perf_event.c')
-rw-r--r--kernel/perf_event.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/perf_event.c b/kernel/perf_event.c
index 3d1552d3c12b..f13c3db765f4 100644
--- a/kernel/perf_event.c
+++ b/kernel/perf_event.c
@@ -341,6 +341,9 @@ list_del_event(struct perf_event *event, struct perf_event_context *ctx)
341 if (event->state > PERF_EVENT_STATE_OFF) 341 if (event->state > PERF_EVENT_STATE_OFF)
342 event->state = PERF_EVENT_STATE_OFF; 342 event->state = PERF_EVENT_STATE_OFF;
343 343
344 if (event->state > PERF_EVENT_STATE_FREE)
345 return;
346
344 /* 347 /*
345 * If this was a group event with sibling events then 348 * If this was a group event with sibling events then
346 * upgrade the siblings to singleton events by adding them 349 * upgrade the siblings to singleton events by adding them
@@ -1856,6 +1859,8 @@ int perf_event_release_kernel(struct perf_event *event)
1856{ 1859{
1857 struct perf_event_context *ctx = event->ctx; 1860 struct perf_event_context *ctx = event->ctx;
1858 1861
1862 event->state = PERF_EVENT_STATE_FREE;
1863
1859 WARN_ON_ONCE(ctx->parent_ctx); 1864 WARN_ON_ONCE(ctx->parent_ctx);
1860 mutex_lock(&ctx->mutex); 1865 mutex_lock(&ctx->mutex);
1861 perf_event_remove_from_context(event); 1866 perf_event_remove_from_context(event);