summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/perf_event.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/perf_event.c b/kernel/perf_event.c
index f395fb4..f29b525 100644
--- a/kernel/perf_event.c
+++ b/kernel/perf_event.c
@@ -5236,12 +5236,15 @@ struct pmu *perf_init_event(struct perf_event *event)
list_for_each_entry_rcu(pmu, &pmus, entry) {
int ret = pmu->event_init(event);
if (!ret)
- break;
+ goto unlock;
+
if (ret != -ENOENT) {
pmu = ERR_PTR(ret);
- break;
+ goto unlock;
}
}
+ pmu = ERR_PTR(-ENOENT);
+unlock:
srcu_read_unlock(&pmus_srcu, idx);
return pmu;