diff options
author | David Woodhouse <David.Woodhouse@intel.com> | 2008-09-01 12:32:13 +0200 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2008-09-01 12:32:13 +0200 |
commit | 9d7548d4ca3c52ecb58f098a32b0756cdf8f96ee (patch) | |
tree | 651f7058bbaa2d8b2855286380d614afcf505118 /arch/x86/kernel/signal_64.c | |
parent | [JFFS2] Move JFFS2 config options out of fs/Kconfig (diff) | |
parent | Resource handling: add 'insert_resource_expand_to_fit()' function (diff) | |
download | linux-9d7548d4ca3c52ecb58f098a32b0756cdf8f96ee.tar.xz linux-9d7548d4ca3c52ecb58f098a32b0756cdf8f96ee.zip |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'arch/x86/kernel/signal_64.c')
-rw-r--r-- | arch/x86/kernel/signal_64.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/x86/kernel/signal_64.c b/arch/x86/kernel/signal_64.c index b45ef8ddd651..ca316b5b742c 100644 --- a/arch/x86/kernel/signal_64.c +++ b/arch/x86/kernel/signal_64.c @@ -104,7 +104,16 @@ static inline int restore_i387(struct _fpstate __user *buf) clts(); task_thread_info(current)->status |= TS_USEDFPU; } - return restore_fpu_checking((__force struct i387_fxsave_struct *)buf); + err = restore_fpu_checking((__force struct i387_fxsave_struct *)buf); + if (unlikely(err)) { + /* + * Encountered an error while doing the restore from the + * user buffer, clear the fpu state. + */ + clear_fpu(tsk); + clear_used_math(); + } + return err; } /* |