mirror of https://gitee.com/openkylin/linux.git
perf c2c: Use mem_info refcnt logic
Switch to refcnt logic instead of duplicating mem_info objects. No functional change, just saving some memory. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/20180307155020.32613-7-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
9f87498f1c
commit
5cedb413a6
|
@ -237,9 +237,12 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused,
|
|||
if (mi == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
mi_dup = memdup(mi, sizeof(*mi));
|
||||
if (!mi_dup)
|
||||
goto free_mi;
|
||||
/*
|
||||
* The mi object is released in hists__add_entry_ops,
|
||||
* if it gets sorted out into existing data, so we need
|
||||
* to take the copy now.
|
||||
*/
|
||||
mi_dup = mem_info__get(mi);
|
||||
|
||||
c2c_decode_stats(&stats, mi);
|
||||
|
||||
|
@ -247,7 +250,7 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused,
|
|||
&al, NULL, NULL, mi,
|
||||
sample, true);
|
||||
if (he == NULL)
|
||||
goto free_mi_dup;
|
||||
goto free_mi;
|
||||
|
||||
c2c_he = container_of(he, struct c2c_hist_entry, he);
|
||||
c2c_add_stats(&c2c_he->stats, &stats);
|
||||
|
@ -272,19 +275,15 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused,
|
|||
|
||||
mi = mi_dup;
|
||||
|
||||
mi_dup = memdup(mi, sizeof(*mi));
|
||||
if (!mi_dup)
|
||||
goto free_mi;
|
||||
|
||||
c2c_hists = he__get_c2c_hists(he, c2c.cl_sort, 2);
|
||||
if (!c2c_hists)
|
||||
goto free_mi_dup;
|
||||
goto free_mi;
|
||||
|
||||
he = hists__add_entry_ops(&c2c_hists->hists, &c2c_entry_ops,
|
||||
&al, NULL, NULL, mi,
|
||||
sample, true);
|
||||
if (he == NULL)
|
||||
goto free_mi_dup;
|
||||
goto free_mi;
|
||||
|
||||
c2c_he = container_of(he, struct c2c_hist_entry, he);
|
||||
c2c_add_stats(&c2c_he->stats, &stats);
|
||||
|
@ -303,10 +302,9 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused,
|
|||
addr_location__put(&al);
|
||||
return ret;
|
||||
|
||||
free_mi_dup:
|
||||
free(mi_dup);
|
||||
free_mi:
|
||||
free(mi);
|
||||
mem_info__put(mi_dup);
|
||||
mem_info__put(mi);
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue