Revert "ARM: vfp: ensure that thread flushing works if preempted"

This reverts commit 4f77fd436e53acf5bc0a06a24331f64b07fb33ec.
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c
index 50dbe35..445a996 100644
--- a/arch/arm/vfp/vfpmodule.c
+++ b/arch/arm/vfp/vfpmodule.c
@@ -89,20 +89,6 @@
 	union vfp_state *vfp = &thread->vfpstate;
 	unsigned int cpu;
 
-	/*
-	 * Disable VFP to ensure we initialize it first.  We must ensure
-	 * that the modification of vfp_current_hw_state[] and hardware
-	 * disable are done for the same CPU and without preemption.
-	 *
-	 * Do this first to ensure that preemption won't overwrite our
-	 * state saving should access to the VFP be enabled at this point.
-	 */
-	cpu = get_cpu();
-	if (vfp_current_hw_state[cpu] == vfp)
-		vfp_current_hw_state[cpu] = NULL;
-	fmxr(FPEXC, fmrx(FPEXC) & ~FPEXC_EN);
-	put_cpu();
-
 	memset(vfp, 0, sizeof(union vfp_state));
 
 	vfp->hard.fpexc = FPEXC_EN;
@@ -110,6 +96,17 @@
 #ifdef CONFIG_SMP
 	vfp->hard.cpu = NR_CPUS;
 #endif
+
+	/*
+	 * Disable VFP to ensure we initialize it first.  We must ensure
+	 * that the modification of vfp_current_hw_state[] and hardware disable
+	 * are done for the same CPU and without preemption.
+	 */
+	cpu = get_cpu();
+	if (vfp_current_hw_state[cpu] == vfp)
+		vfp_current_hw_state[cpu] = NULL;
+	fmxr(FPEXC, fmrx(FPEXC) & ~FPEXC_EN);
+	put_cpu();
 }
 
 static void vfp_thread_exit(struct thread_info *thread)