diff options
| author | Dave Airlie <airlied@redhat.com> | 2012-05-07 16:09:09 +0100 | 
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2012-05-07 16:09:35 +0100 | 
| commit | 4f256e8aa3eda15c11c3cec3ec5336e1fc579cbd (patch) | |
| tree | 33c02b5e18e79756005a3edfa7c862a47de668d5 /kernel/sched/core.c | |
| parent | 4086b1e2b19729eebf632073b9d4ab811726d8eb (diff) | |
| parent | dc257cf154be708ecc47b8b89c12ad8cd2cc35e4 (diff) | |
| download | olio-linux-3.10-4f256e8aa3eda15c11c3cec3ec5336e1fc579cbd.tar.xz olio-linux-3.10-4f256e8aa3eda15c11c3cec3ec5336e1fc579cbd.zip  | |
Merge branch 'for-airlied' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next
Daniel prepared this branch with a back-merge as git was getting
very confused about changes in intel_display.c
Diffstat (limited to 'kernel/sched/core.c')
| -rw-r--r-- | kernel/sched/core.c | 22 | 
1 files changed, 16 insertions, 6 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 4603b9d8f30..0533a688ce2 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -6405,16 +6405,26 @@ static void __sdt_free(const struct cpumask *cpu_map)  		struct sd_data *sdd = &tl->data;  		for_each_cpu(j, cpu_map) { -			struct sched_domain *sd = *per_cpu_ptr(sdd->sd, j); -			if (sd && (sd->flags & SD_OVERLAP)) -				free_sched_groups(sd->groups, 0); -			kfree(*per_cpu_ptr(sdd->sd, j)); -			kfree(*per_cpu_ptr(sdd->sg, j)); -			kfree(*per_cpu_ptr(sdd->sgp, j)); +			struct sched_domain *sd; + +			if (sdd->sd) { +				sd = *per_cpu_ptr(sdd->sd, j); +				if (sd && (sd->flags & SD_OVERLAP)) +					free_sched_groups(sd->groups, 0); +				kfree(*per_cpu_ptr(sdd->sd, j)); +			} + +			if (sdd->sg) +				kfree(*per_cpu_ptr(sdd->sg, j)); +			if (sdd->sgp) +				kfree(*per_cpu_ptr(sdd->sgp, j));  		}  		free_percpu(sdd->sd); +		sdd->sd = NULL;  		free_percpu(sdd->sg); +		sdd->sg = NULL;  		free_percpu(sdd->sgp); +		sdd->sgp = NULL;  	}  }  |