perf/cgroup: Reorder perf_cgroup_connect()

Move perf_cgroup_connect() after perf_event_alloc(), such that we can
find/use the PMU's cpu context.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ian Rogers <irogers@google.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lkml.kernel.org/r/20200214075133.181299-2-irogers@google.com
This commit is contained in:
Peter Zijlstra 2020-02-13 23:51:28 -08:00 committed by Ingo Molnar
parent 2c2366c754
commit 98add2af89

View File

@ -10774,12 +10774,6 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu,
if (!has_branch_stack(event)) if (!has_branch_stack(event))
event->attr.branch_sample_type = 0; event->attr.branch_sample_type = 0;
if (cgroup_fd != -1) {
err = perf_cgroup_connect(cgroup_fd, event, attr, group_leader);
if (err)
goto err_ns;
}
pmu = perf_init_event(event); pmu = perf_init_event(event);
if (IS_ERR(pmu)) { if (IS_ERR(pmu)) {
err = PTR_ERR(pmu); err = PTR_ERR(pmu);
@ -10801,6 +10795,12 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu,
goto err_pmu; goto err_pmu;
} }
if (cgroup_fd != -1) {
err = perf_cgroup_connect(cgroup_fd, event, attr, group_leader);
if (err)
goto err_pmu;
}
err = exclusive_event_init(event); err = exclusive_event_init(event);
if (err) if (err)
goto err_pmu; goto err_pmu;
@ -10861,12 +10861,12 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu,
exclusive_event_destroy(event); exclusive_event_destroy(event);
err_pmu: err_pmu:
if (is_cgroup_event(event))
perf_detach_cgroup(event);
if (event->destroy) if (event->destroy)
event->destroy(event); event->destroy(event);
module_put(pmu->module); module_put(pmu->module);
err_ns: err_ns:
if (is_cgroup_event(event))
perf_detach_cgroup(event);
if (event->ns) if (event->ns)
put_pid_ns(event->ns); put_pid_ns(event->ns);
if (event->hw.target) if (event->hw.target)