|
@@ -143,6 +143,7 @@ restore_sigcontext (struct sigcontext __user *sc, struct sigscratch *scr)
|
|
|
|
|
|
__copy_from_user(current->thread.fph, &sc->sc_fr[32], 96*16);
|
|
__copy_from_user(current->thread.fph, &sc->sc_fr[32], 96*16);
|
|
psr->mfh = 0; /* drop signal handler's fph contents... */
|
|
psr->mfh = 0; /* drop signal handler's fph contents... */
|
|
|
|
+ preempt_disable();
|
|
if (psr->dfh)
|
|
if (psr->dfh)
|
|
ia64_drop_fpu(current);
|
|
ia64_drop_fpu(current);
|
|
else {
|
|
else {
|
|
@@ -150,6 +151,7 @@ restore_sigcontext (struct sigcontext __user *sc, struct sigscratch *scr)
|
|
__ia64_load_fpu(current->thread.fph);
|
|
__ia64_load_fpu(current->thread.fph);
|
|
ia64_set_local_fpu_owner(current);
|
|
ia64_set_local_fpu_owner(current);
|
|
}
|
|
}
|
|
|
|
+ preempt_enable();
|
|
}
|
|
}
|
|
return err;
|
|
return err;
|
|
}
|
|
}
|