diff --git a/kernel/perf_event.c b/kernel/perf_event.c index bc46bff696206851925ab18eb259ea23eab9b220..440f9ca067b2269b3fe9d3178ccda8e561a305f1 100644 --- a/kernel/perf_event.c +++ b/kernel/perf_event.c @@ -2150,7 +2150,9 @@ static void free_event(struct perf_event *event) if (event->destroy) event->destroy(event); - put_ctx(event->ctx); + if (event->ctx) + put_ctx(event->ctx); + call_rcu(&event->rcu_head, free_event_rcu); }