diff options
author | Keith Owens <kaos@sgi.com> | 2005-06-30 22:53:00 -0700 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2005-07-06 15:31:15 -0700 |
commit | 2ba3e3e65cf182436757ba13ea8d564e2950fb56 (patch) | |
tree | 7546a5141398e8ecaa493a58a4ca8af11deaf04d /arch | |
parent | 7fe4c1b16854f0440939c62b8102cbf5c75e7cdc (diff) | |
download | linux-3.10-2ba3e3e65cf182436757ba13ea8d564e2950fb56.tar.gz linux-3.10-2ba3e3e65cf182436757ba13ea8d564e2950fb56.tar.bz2 linux-3.10-2ba3e3e65cf182436757ba13ea8d564e2950fb56.zip |
[IA64] restore_sigcontext is not preempt safe
restore_sigcontext calls ia64_set_local_fpu_owner() which requires that
preempt be disabled.
Signed-off-by: Keith Owens <kaos@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/ia64/kernel/signal.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/ia64/kernel/signal.c b/arch/ia64/kernel/signal.c index edd9f07860b..b8a0a7d257a 100644 --- a/arch/ia64/kernel/signal.c +++ b/arch/ia64/kernel/signal.c @@ -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); psr->mfh = 0; /* drop signal handler's fph contents... */ + preempt_disable(); if (psr->dfh) ia64_drop_fpu(current); else { @@ -150,6 +151,7 @@ restore_sigcontext (struct sigcontext __user *sc, struct sigscratch *scr) __ia64_load_fpu(current->thread.fph); ia64_set_local_fpu_owner(current); } + preempt_enable(); } return err; } |