|
@@ -5716,6 +5716,7 @@ struct pmu *perf_init_event(struct perf_event *event)
|
|
pmu = idr_find(&pmu_idr, event->attr.type);
|
|
pmu = idr_find(&pmu_idr, event->attr.type);
|
|
rcu_read_unlock();
|
|
rcu_read_unlock();
|
|
if (pmu) {
|
|
if (pmu) {
|
|
|
|
+ event->pmu = pmu;
|
|
ret = pmu->event_init(event);
|
|
ret = pmu->event_init(event);
|
|
if (ret)
|
|
if (ret)
|
|
pmu = ERR_PTR(ret);
|
|
pmu = ERR_PTR(ret);
|
|
@@ -5723,6 +5724,7 @@ struct pmu *perf_init_event(struct perf_event *event)
|
|
}
|
|
}
|
|
|
|
|
|
list_for_each_entry_rcu(pmu, &pmus, entry) {
|
|
list_for_each_entry_rcu(pmu, &pmus, entry) {
|
|
|
|
+ event->pmu = pmu;
|
|
ret = pmu->event_init(event);
|
|
ret = pmu->event_init(event);
|
|
if (!ret)
|
|
if (!ret)
|
|
goto unlock;
|
|
goto unlock;
|
|
@@ -5849,8 +5851,6 @@ done:
|
|
return ERR_PTR(err);
|
|
return ERR_PTR(err);
|
|
}
|
|
}
|
|
|
|
|
|
- event->pmu = pmu;
|
|
|
|
-
|
|
|
|
if (!event->parent) {
|
|
if (!event->parent) {
|
|
if (event->attach_state & PERF_ATTACH_TASK)
|
|
if (event->attach_state & PERF_ATTACH_TASK)
|
|
jump_label_inc(&perf_sched_events);
|
|
jump_label_inc(&perf_sched_events);
|