forked from luck/tmp_suning_uos_patched
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:
parent
2c2366c754
commit
98add2af89
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user