mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 14:24:11 +08:00
coresight: perf: Clean up function etm_setup_aux()
There is no point in allocating sink memory for a trace session if there is not a way to free it once it is no longer needed. As such make sure the sink API function to allocate and free memory have been implemented before moving ahead with the establishment of a trace session. Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org> Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com> Tested-by: Leo Yan <leo.yan@linaro.org> Tested-by: Robert Walker <robert.walker@arm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
0916447c87
commit
02d5c897a0
@ -134,8 +134,7 @@ static void free_event_data(struct work_struct *work)
|
||||
if (event_data->snk_config && !WARN_ON(cpumask_empty(mask))) {
|
||||
cpu = cpumask_first(mask);
|
||||
sink = coresight_get_sink(etm_event_cpu_path(event_data, cpu));
|
||||
if (sink_ops(sink)->free_buffer)
|
||||
sink_ops(sink)->free_buffer(event_data->snk_config);
|
||||
sink_ops(sink)->free_buffer(event_data->snk_config);
|
||||
}
|
||||
|
||||
for_each_cpu(cpu, mask) {
|
||||
@ -215,7 +214,7 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,
|
||||
sink = coresight_get_enabled_sink(true);
|
||||
}
|
||||
|
||||
if (!sink || !sink_ops(sink)->alloc_buffer)
|
||||
if (!sink)
|
||||
goto err;
|
||||
|
||||
mask = &event_data->mask;
|
||||
@ -261,6 +260,9 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,
|
||||
if (cpu >= nr_cpu_ids)
|
||||
goto err;
|
||||
|
||||
if (!sink_ops(sink)->alloc_buffer || !sink_ops(sink)->free_buffer)
|
||||
goto err;
|
||||
|
||||
/* Allocate the sink buffer for this session */
|
||||
event_data->snk_config =
|
||||
sink_ops(sink)->alloc_buffer(sink, cpu, pages,
|
||||
|
Loading…
Reference in New Issue
Block a user