]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/powerpc/kernel/process.c
[POWERPC] Fix atomicity of TIF update in flush_thread()
[linux-2.6-omap-h63xx.git] / arch / powerpc / kernel / process.c
index f3d4dd580dd69fe20a04dd4762866ad0f82d51ea..e53b2988d1bfc9144a1771ab9585fa21c4e568e7 100644 (file)
@@ -465,8 +465,13 @@ void flush_thread(void)
 #ifdef CONFIG_PPC64
        struct thread_info *t = current_thread_info();
 
-       if (t->flags & _TIF_ABI_PENDING)
-               t->flags ^= (_TIF_ABI_PENDING | _TIF_32BIT);
+       if (test_ti_thread_flag(t, TIF_ABI_PENDING)) {
+               clear_ti_thread_flag(t, TIF_ABI_PENDING);
+               if (test_ti_thread_flag(t, TIF_32BIT))
+                       clear_ti_thread_flag(t, TIF_32BIT);
+               else
+                       set_ti_thread_flag(t, TIF_32BIT);
+       }
 #endif
 
        discard_lazy_cpu_state();