All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Woodhouse, David" <dwmw@amazon.co.uk>
To: Thomas Gleixner <tglx@linutronix.de>,
	LKML <linux-kernel@vger.kernel.org>
Cc: <x86@kernel.org>, Peter Zijlstra <peterz@infradead.org>,
	Borislav Petkov <bp@alien8.de>, <stable@vger.kernel.org>,
	"Ghitulete, Razvan-alin" <rga@amazon.com>
Subject: Re: [PATCH] x86/mce: Make machine check speculation protected
Date: Fri, 19 Jan 2018 09:46:26 +0100	[thread overview]
Message-ID: <1516351586.5087.9.camel@amazon.co.uk> (raw)
In-Reply-To: <alpine.DEB.2.20.1801181626290.1847@nanos>

[-- Attachment #1: Type: text/plain, Size: 1904 bytes --]

On Thu, 2018-01-18 at 16:28 +0100, Thomas Gleixner wrote:
> The machine check idtentry uses an indirect branch directly from the low
> level code. This evades the speculation protection.
> 
> Replace it by a direct call into C code and issue the indirect call there
> so the compiler can apply the proper speculation protection.
> 
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

Cc: stable for at least 4.9.

> ---
>  arch/x86/entry/entry_64.S        |    2 +-
>  arch/x86/include/asm/traps.h     |    1 +
>  arch/x86/kernel/cpu/mcheck/mce.c |    5 +++++
>  3 files changed, 7 insertions(+), 1 deletion(-)
> 
> --- a/arch/x86/entry/entry_64.S
> +++ b/arch/x86/entry/entry_64.S
> @@ -1264,7 +1264,7 @@ idtentry async_page_fault	do_async_page_
>  #endif
>  
>  #ifdef CONFIG_X86_MCE
> -idtentry machine_check					has_error_code=0	paranoid=1 do_sym=*machine_check_vector(%rip)
> +idtentry machine_check		do_mce			has_error_code=0	paranoid=1
>  #endif
>  
>  /*
> --- a/arch/x86/include/asm/traps.h
> +++ b/arch/x86/include/asm/traps.h
> @@ -88,6 +88,7 @@ dotraplinkage void do_simd_coprocessor_e
>  #ifdef CONFIG_X86_32
>  dotraplinkage void do_iret_error(struct pt_regs *, long);
>  #endif
> +dotraplinkage void do_mce(struct pt_regs *, long);
>  
>  static inline int get_si_code(unsigned long condition)
>  {
> --- a/arch/x86/kernel/cpu/mcheck/mce.c
> +++ b/arch/x86/kernel/cpu/mcheck/mce.c
> @@ -1785,6 +1785,11 @@ static void unexpected_machine_check(str
>  void (*machine_check_vector)(struct pt_regs *, long error_code) =
>  						unexpected_machine_check;
>  
> +dotraplinkage void do_mce(struct pt_regs *regs, long error_code)
> +{
> +	machine_check_vector(regs, error_code);
> +}
> +
>  /*
>   * Called for each booted CPU to set up machine checks.
>   * Must be called with preempt off:
> 

[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5210 bytes --]

  parent reply	other threads:[~2018-01-19  8:48 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-18 15:28 [PATCH] x86/mce: Make machine check speculation protected Thomas Gleixner
2018-01-18 15:46 ` Peter Zijlstra
2018-01-18 15:53 ` Borislav Petkov
2018-01-18 15:55 ` David Woodhouse
2018-01-19  8:46 ` Woodhouse, David [this message]
2018-01-19 15:46 ` [tip:x86/pti] " tip-bot for Thomas Gleixner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1516351586.5087.9.camel@amazon.co.uk \
    --to=dwmw@amazon.co.uk \
    --cc=bp@alien8.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=rga@amazon.com \
    --cc=stable@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.