This makes sure we clear the FPU usage counter for newly created tasks,
just so that we start off in a known state (for example, don't try to
preload the FPU state on the first task switch etc).
It also fixes a thinko in when we increment the fpu_counter at task
switch time, introduced by commit 
34ddc81a230b ("i387: re-introduce FPU
state preloading at context switch time").  We should increment the
*new* task fpu_counter, not the old task, and only if we decide to use
that state (whether lazily or preloaded).
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
 
                if (__save_init_fpu(old))
                        fpu_lazy_state_intact(old);
                __thread_clear_has_fpu(old);
-               old->fpu_counter++;
 
                /* Don't change CR0.TS if we just switch! */
                if (fpu.preload) {
+                       new->fpu_counter++;
                        __thread_set_has_fpu(new);
                        prefetch(new->thread.fpu.state);
                } else
        } else {
                old->fpu_counter = 0;
                if (fpu.preload) {
+                       new->fpu_counter++;
                        if (fpu_lazy_restore(new))
                                fpu.preload = 0;
                        else
 
 
        task_user_gs(p) = get_user_gs(regs);
 
+       p->fpu_counter = 0;
        p->thread.io_bitmap_ptr = NULL;
        tsk = current;
        err = -ENOMEM;
 
 
        set_tsk_thread_flag(p, TIF_FORK);
 
+       p->fpu_counter = 0;
        p->thread.io_bitmap_ptr = NULL;
 
        savesegment(gs, p->thread.gsindex);