sparc32, copy_thread: Clear TIF_USEDFPU flag of created task instead of current
authorTkhai Kirill <tkhai@yandex.ru>
Fri, 29 Jun 2012 02:55:25 +0000 (02:55 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 26 Jul 2012 23:49:40 +0000 (16:49 -0700)
FPU state is saved into task_struct of created task. Current task continues
use of the state, so it needs TIF_USEDFPU flag is not cleared.

Created task receives fresh FPU and cleared TIF_USEFPU flag is required for it.

Signed-off-by: Kirill Tkhai <tkhai@yandex.ru>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/kernel/process_32.c

index cb36e82dcd5dd789221852c366934c93f26d7ba3..14006d8aca2849899d2ce1821f70f42d8ac50633 100644 (file)
@@ -333,9 +333,6 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
                put_psr(get_psr() | PSR_EF);
                fpsave(&p->thread.float_regs[0], &p->thread.fsr,
                       &p->thread.fpqueue[0], &p->thread.fpqdepth);
-#ifdef CONFIG_SMP
-               clear_thread_flag(TIF_USEDFPU);
-#endif
        }
 
        /*
@@ -413,6 +410,7 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
 #ifdef CONFIG_SMP
        /* FPU must be disabled on SMP. */
        childregs->psr &= ~PSR_EF;
+       clear_tsk_thread_flag(p, TIF_USEDFPU);
 #endif
 
        /* Set the return value for the child. */