Re: [PATCH 3/4] x86: call verify_cpu during 32bit CPU startup
From: Yinghai Lu
Date: Sun Nov 14 2010 - 01:34:00 EST
On Wed, Nov 10, 2010 at 10:35 AM, Kees Cook <kees.cook@xxxxxxxxxxxxx> 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@xxxxxxxxxxxxx>
> Acked-by: Pekka Enberg <penberg@xxxxxxxxxx>
> Acked-by: Alan Cox <alan@xxxxxxxxxxxxxxxxxxx>
> ---
> 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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/