Messages in this thread | | | Date | Sat, 13 Nov 2010 22:33:51 -0800 | Subject | Re: [PATCH 3/4] x86: call verify_cpu during 32bit CPU startup | From | Yinghai Lu <> |
| |
On Wed, Nov 10, 2010 at 10:35 AM, Kees Cook <kees.cook@canonical.com> wrote: > The XD_DISABLE-clearing side-effect needs to happen for both 32bit > and 64bit, but the 32bit init routines were not calling verify_cpu() > yet. This adds that call to gain the side-effect. > > The longmode/SSE tests being performed in verify_cpu() need to happen very > early for 64bit but not for 32bit. Instead of including it in two places > for 32bit, we can just include it once in arch/x86/kernel/head_32.S. > > Signed-off-by: Kees Cook <kees.cook@canonical.com> > Acked-by: Pekka Enberg <penberg@kernel.org> > Acked-by: Alan Cox <alan@lxorguk.ukuu.org.uk> > --- > arch/x86/kernel/head_32.S | 6 ++++++ > arch/x86/kernel/verify_cpu.S | 1 + > 2 files changed, 7 insertions(+), 0 deletions(-) > > diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S > index bcece91..fdaea52 100644 > --- a/arch/x86/kernel/head_32.S > +++ b/arch/x86/kernel/head_32.S > @@ -314,6 +314,10 @@ ENTRY(startup_32_smp) > subl $0x80000001, %eax > cmpl $(0x8000ffff-0x80000001), %eax > ja 6f > + > + /* Clear bogus XD_DISABLE bits */ > + call verify_cpu > + > mov $0x80000001, %eax > cpuid > /* Execute Disable bit supported? */ > @@ -609,6 +613,8 @@ ignore_int: > #endif > iret > > +#include "verify_cpu.S" > + > __REFDATA > .align 4 > ENTRY(initial_code) > diff --git a/arch/x86/kernel/verify_cpu.S b/arch/x86/kernel/verify_cpu.S > index ccb4136..5644b4b 100644 > --- a/arch/x86/kernel/verify_cpu.S > +++ b/arch/x86/kernel/verify_cpu.S > @@ -19,6 +19,7 @@ > * > * arch/x86_64/boot/compressed/head_64.S: Boot cpu verification > * arch/x86_64/kernel/trampoline_64.S: secondary processor verfication > + * arch/x86_64/kernel/head_32.S: processor startup
should change those x86_64 to x86.
Yinghai -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |