diff --git a/kernel/events/core.c b/kernel/events/core.c index 856d98c36f562d..2a50b2e717c5b0 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -10743,7 +10743,8 @@ void perf_pmu_unregister(struct pmu *pmu) device_del(pmu->dev); put_device(pmu->dev); } - free_pmu_context(pmu); + if (!find_pmu_context(pmu->task_ctx_nr)) + free_pmu_context(pmu); mutex_unlock(&pmus_lock); } EXPORT_SYMBOL_GPL(perf_pmu_unregister);