|
@@ -1573,7 +1573,7 @@ next:
|
|
int perf_session__cpu_bitmap(struct perf_session *session,
|
|
int perf_session__cpu_bitmap(struct perf_session *session,
|
|
const char *cpu_list, unsigned long *cpu_bitmap)
|
|
const char *cpu_list, unsigned long *cpu_bitmap)
|
|
{
|
|
{
|
|
- int i;
|
|
|
|
|
|
+ int i, err = -1;
|
|
struct cpu_map *map;
|
|
struct cpu_map *map;
|
|
|
|
|
|
for (i = 0; i < PERF_TYPE_MAX; ++i) {
|
|
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) {
|
|
if (cpu >= MAX_NR_CPUS) {
|
|
pr_err("Requested CPU %d too large. "
|
|
pr_err("Requested CPU %d too large. "
|
|
"Consider raising MAX_NR_CPUS\n", cpu);
|
|
"Consider raising MAX_NR_CPUS\n", cpu);
|
|
- return -1;
|
|
|
|
|
|
+ goto out_delete_map;
|
|
}
|
|
}
|
|
|
|
|
|
set_bit(cpu, cpu_bitmap);
|
|
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,
|
|
void perf_session__fprintf_info(struct perf_session *session, FILE *fp,
|