perf session: Free cpu_map in perf_session__cpu_bitmap
This method uses a temporary struct cpu_map to figure out the cpus present in the received cpu list in string form, but it failed to free it after returning. Fix it. Signed-off-by: Stanislav Fomichev <stfomichev@yandex-team.ru> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1390217980-22424-3-git-send-email-stfomichev@yandex-team.ru [ Use goto + err = -1 to do the delete just once, in the normal exit path ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Родитель
3415d8b851
Коммит
8bac41cbfe
|
@ -1573,7 +1573,7 @@ next:
|
|||
int perf_session__cpu_bitmap(struct perf_session *session,
|
||||
const char *cpu_list, unsigned long *cpu_bitmap)
|
||||
{
|
||||
int i;
|
||||
int i, err = -1;
|
||||
struct cpu_map *map;
|
||||
|
||||
for (i = 0; i < PERF_TYPE_MAX; ++i) {
|
||||
|
@ -1602,13 +1602,17 @@ int perf_session__cpu_bitmap(struct perf_session *session,
|
|||
if (cpu >= MAX_NR_CPUS) {
|
||||
pr_err("Requested CPU %d too large. "
|
||||
"Consider raising MAX_NR_CPUS\n", cpu);
|
||||
return -1;
|
||||
goto out_delete_map;
|
||||
}
|
||||
|
||||
set_bit(cpu, cpu_bitmap);
|
||||
}
|
||||
|
||||
return 0;
|
||||
err = 0;
|
||||
|
||||
out_delete_map:
|
||||
cpu_map__delete(map);
|
||||
return err;
|
||||
}
|
||||
|
||||
void perf_session__fprintf_info(struct perf_session *session, FILE *fp,
|
||||
|
|
Загрузка…
Ссылка в новой задаче