diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-10-11 20:23:20 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-10-11 20:23:20 +0200 |
commit | 0afe2db21394820d32646a695eccf3fbfe6ab5c7 (patch) | |
tree | 6d925383f444a242ebc77d167420efb7e6ad8d99 /arch/x86/kernel/sigframe.h | |
parent | d84705969f898f294bc3fc32eca33580f14105bd (diff) | |
parent | 43603c8df97f246e8be7b9cc92a8f968a85108bd (diff) |
Merge branch 'x86/unify-cpu-detect' into x86-v28-for-linus-phase4-D
Conflicts:
arch/x86/kernel/cpu/common.c
arch/x86/kernel/signal_64.c
include/asm-x86/cpufeature.h
Diffstat (limited to 'arch/x86/kernel/sigframe.h')
-rw-r--r-- | arch/x86/kernel/sigframe.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/arch/x86/kernel/sigframe.h b/arch/x86/kernel/sigframe.h index 8b4956e800a..cc673aa55ce 100644 --- a/arch/x86/kernel/sigframe.h +++ b/arch/x86/kernel/sigframe.h @@ -3,9 +3,18 @@ struct sigframe { char __user *pretcode; int sig; struct sigcontext sc; - struct _fpstate fpstate; + /* + * fpstate is unused. fpstate is moved/allocated after + * retcode[] below. This movement allows to have the FP state and the + * future state extensions (xsave) stay together. + * And at the same time retaining the unused fpstate, prevents changing + * the offset of extramask[] in the sigframe and thus prevent any + * legacy application accessing/modifying it. + */ + struct _fpstate fpstate_unused; unsigned long extramask[_NSIG_WORDS-1]; char retcode[8]; + /* fp state follows here */ }; struct rt_sigframe { @@ -15,14 +24,15 @@ struct rt_sigframe { void __user *puc; struct siginfo info; struct ucontext uc; - struct _fpstate fpstate; char retcode[8]; + /* fp state follows here */ }; #else struct rt_sigframe { char __user *pretcode; struct ucontext uc; struct siginfo info; + /* fp state follows here */ }; int ia32_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, |