Commit 940c5b29 authored by Lin Ming's avatar Lin Ming Committed by Ingo Molnar

perf: Fix the missing event initialization when pmu is found in idr

Currently, the event is not initialized if pmu is found in idr. This
never causes bug just because now no pmu is associated with the idr
id.
Signed-off-by: default avatarLin Ming <ming.m.lin@intel.com>
Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <1298812411.2699.9.camel@localhost>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 888a8a3e
...@@ -6098,17 +6098,22 @@ struct pmu *perf_init_event(struct perf_event *event) ...@@ -6098,17 +6098,22 @@ struct pmu *perf_init_event(struct perf_event *event)
{ {
struct pmu *pmu = NULL; struct pmu *pmu = NULL;
int idx; int idx;
int ret;
idx = srcu_read_lock(&pmus_srcu); idx = srcu_read_lock(&pmus_srcu);
rcu_read_lock(); rcu_read_lock();
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) {
ret = pmu->event_init(event);
if (ret)
pmu = ERR_PTR(ret);
goto unlock; goto unlock;
}
list_for_each_entry_rcu(pmu, &pmus, entry) { list_for_each_entry_rcu(pmu, &pmus, entry) {
int ret = pmu->event_init(event); ret = pmu->event_init(event);
if (!ret) if (!ret)
goto unlock; goto unlock;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment