aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched/core.c
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2012-05-18 12:13:33 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2012-05-18 12:13:33 -0400
commit16ee6576e25b83806d26eb771138249fcfb5eddc (patch)
tree7c717b80f28b5c59ba673dc00f2ca9bd0fc068d4 /kernel/sched/core.c
parent16fa7e8200fb9066b77a3f27cbed8e4a9fc71998 (diff)
parent9b63776fa3ca96c4ecda76f6fa947b7b0add66ac (diff)
Merge remote-tracking branch 'tip/perf/urgent' into perf/core
Merge reason: We are going to queue up a dependent patch: "perf tools: Move parse event automated tests to separated object" That depends on: commit e7c72d8 perf tools: Add 'G' and 'H' modifiers to event parsing Conflicts: tools/perf/builtin-stat.c Conflicted with the recent 'perf_target' patches when checking the result of perf_evsel open routines to see if a retry is needed to cope with older kernels where the exclude guest/host perf_event_attr bits were not used. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'kernel/sched/core.c')
-rw-r--r--kernel/sched/core.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 5c692a0a555d..13c38837f2cd 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -6398,16 +6398,26 @@ static void __sdt_free(const struct cpumask *cpu_map)
6398 struct sd_data *sdd = &tl->data; 6398 struct sd_data *sdd = &tl->data;
6399 6399
6400 for_each_cpu(j, cpu_map) { 6400 for_each_cpu(j, cpu_map) {
6401 struct sched_domain *sd = *per_cpu_ptr(sdd->sd, j); 6401 struct sched_domain *sd;
6402 if (sd && (sd->flags & SD_OVERLAP)) 6402
6403 free_sched_groups(sd->groups, 0); 6403 if (sdd->sd) {
6404 kfree(*per_cpu_ptr(sdd->sd, j)); 6404 sd = *per_cpu_ptr(sdd->sd, j);
6405 kfree(*per_cpu_ptr(sdd->sg, j)); 6405 if (sd && (sd->flags & SD_OVERLAP))
6406 kfree(*per_cpu_ptr(sdd->sgp, j)); 6406 free_sched_groups(sd->groups, 0);
6407 kfree(*per_cpu_ptr(sdd->sd, j));
6408 }
6409
6410 if (sdd->sg)
6411 kfree(*per_cpu_ptr(sdd->sg, j));
6412 if (sdd->sgp)
6413 kfree(*per_cpu_ptr(sdd->sgp, j));
6407 } 6414 }
6408 free_percpu(sdd->sd); 6415 free_percpu(sdd->sd);
6416 sdd->sd = NULL;
6409 free_percpu(sdd->sg); 6417 free_percpu(sdd->sg);
6418 sdd->sg = NULL;
6410 free_percpu(sdd->sgp); 6419 free_percpu(sdd->sgp);
6420 sdd->sgp = NULL;
6411 } 6421 }
6412} 6422}
6413 6423