[IA64] save and restore cpus_allowed in cpu_idle_wait
authorSiddha, Suresh B <suresh.b.siddha@intel.com>
Tue, 8 May 2007 16:22:47 +0000 (09:22 -0700)
committerTony Luck <tony.luck@intel.com>
Tue, 8 May 2007 17:01:25 +0000 (10:01 -0700)
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>
arch/ia64/kernel/process.c

index ae96d41..cba6ac3 100644 (file)
@@ -237,6 +237,7 @@ void cpu_idle_wait(void)
 {
        unsigned int cpu, this_cpu = get_cpu();
        cpumask_t map;
+       cpumask_t tmp = current->cpus_allowed;
 
        set_cpus_allowed(current, cpumask_of_cpu(this_cpu));
        put_cpu();
@@ -258,6 +259,7 @@ void cpu_idle_wait(void)
                }
                cpus_and(map, map, cpu_online_map);
        } while (!cpus_empty(map));
+       set_cpus_allowed(current, tmp);
 }
 EXPORT_SYMBOL_GPL(cpu_idle_wait);