aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorSiddha, Suresh B <suresh.b.siddha@intel.com>2007-05-08 12:22:47 -0400
committerTony Luck <tony.luck@intel.com>2007-05-08 13:01:25 -0400
commitbb8416bf8b93d88e23cbbfde962ef85acda5bd5f (patch)
tree50b2f20f3fda534027d0fba0fa9e0eac28bb3f48 /arch
parent9d1d4cc89f3f6952978d37c29607c2d89d350767 (diff)
[IA64] save and restore cpus_allowed in cpu_idle_wait
Save and Restore the task's cpus_allowed mask, across the set_cpus_allowed() in cpu_idle_wait(). Without this, we will endup corrupting task's cpu affinity. Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/ia64/kernel/process.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c
index ae96d4176995..cba6ac398736 100644
--- a/arch/ia64/kernel/process.c
+++ b/arch/ia64/kernel/process.c
@@ -237,6 +237,7 @@ void cpu_idle_wait(void)
237{ 237{
238 unsigned int cpu, this_cpu = get_cpu(); 238 unsigned int cpu, this_cpu = get_cpu();
239 cpumask_t map; 239 cpumask_t map;
240 cpumask_t tmp = current->cpus_allowed;
240 241
241 set_cpus_allowed(current, cpumask_of_cpu(this_cpu)); 242 set_cpus_allowed(current, cpumask_of_cpu(this_cpu));
242 put_cpu(); 243 put_cpu();
@@ -258,6 +259,7 @@ void cpu_idle_wait(void)
258 } 259 }
259 cpus_and(map, map, cpu_online_map); 260 cpus_and(map, map, cpu_online_map);
260 } while (!cpus_empty(map)); 261 } while (!cpus_empty(map));
262 set_cpus_allowed(current, tmp);
261} 263}
262EXPORT_SYMBOL_GPL(cpu_idle_wait); 264EXPORT_SYMBOL_GPL(cpu_idle_wait);
263 265