From: "Woodhouse, David" <dwmw@amazon.co.uk>
To: Paul Turner <pjt@google.com>, Tom Lendacky <thomas.lendacky@amd.com>
Cc: Andi Kleen <ak@linux.intel.com>,
LKML <linux-kernel@vger.kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Greg Kroah-Hartman <gregkh@linux-foundation.org>,
Tim Chen <tim.c.chen@linux.intel.com>,
"Dave Hansen" <dave.hansen@intel.com>,
Thomas Gleixner <tglx@linutronix.de>,
"Kees Cook" <keescook@google.com>, Rik van Riel <riel@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Andy Lutomirski <luto@amacapital.net>,
Jiri Kosina <jikos@kernel.org>,
One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk>
Subject: Re: [PATCH v6 00/10] Retpoline: Avoid speculative indirect calls in kernel
Date: Wed, 10 Jan 2018 15:20:45 +0000 [thread overview]
Message-ID: <1515597645.22302.187.camel@amazon.co.uk> (raw)
In-Reply-To: <CAPM31RJ35qnFwC8Yfa09M3RauV1RuFzaw+HHx3wWNHgSnTPeYA@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2274 bytes --]
On Mon, 2018-01-08 at 02:42 -0800, Paul Turner wrote:
>
> While the cases above involve the crafting and use of poisoned
> entries. Recall also that one of the initial conditions was that we
> should avoid RSB underflow as some CPUs may try to use other indirect
> predictors when this occurs.
I think we should start by deliberately ignoring the CPUs which use the
other indirect predictors on RSB underflow. Those CPUs don't perform
*quite* so badly with IBRS anyway.
Let's get the minimum amount of RSB handling in to cope with the pre-
SKL CPUs, and then see if we really do want to extend it to make SKL
100% secure in retpoline mode or not.
So let's go through your list of cases and attempt to distinguish the
underflow concerns (which I declare we don't care about for now) from
the pollution (which we care about especially for non-SMEP) concerns...
> The cases we care about here are:
> - When we return _into_ protected execution. For the kernel, this
> means when we exit interrupt context into kernel context, since may
> have emptied or reduced the number of RSB entries while in iinterrupt
> context.
Don't care about that particular example. That's underflow-only.
However, we *do* care about entry to kernel code from userspace, for
interrupts and system calls etc. Basically everywhere that the IBRS
code would be setting IBRS, we need to flush the RSB (if !SMEP, I
think).
> - Context switch (even if we are returning to user code, we need to
> at unwind the scheduler/triggering frames that preempted it
> previously, considering that detail, this is a subset of the above,
> but listed for completeness)
Don't care. This is underflow-only. (Which means I think we want to
drop Andi's patch?)
> - On VMEXIT (it turns out we need to worry about both poisoned
> entries, and no entries, the solution is a single refill
> nonetheless).
Do care. This fixes pollution from the guest, and even SMEP isn't
enough to make us not care.
> - Leaving deeper (>C1) c-states, which may have flushed hardware
> state
Don't care.
> - Where we are unwinding call-chains of >16 entries[*]
Don't care.
Overall, I think the RSB-stuffing is needed in all the same places that
it's needed with IBRS.
[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5210 bytes --]
next prev parent reply other threads:[~2018-01-10 15:21 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-07 22:11 David Woodhouse
2018-01-07 22:11 ` [PATCH v6 01/10] x86/retpoline: Add initial retpoline support David Woodhouse
2018-01-08 10:45 ` Peter Zijlstra
2018-01-08 10:53 ` David Woodhouse
2018-01-08 11:03 ` Peter Zijlstra
2018-01-08 12:45 ` David Woodhouse
2018-01-08 13:42 ` Josh Poimboeuf
2018-01-08 13:46 ` Thomas Gleixner
2018-01-08 13:53 ` Josh Poimboeuf
2018-01-08 14:26 ` David Woodhouse
2018-01-08 21:20 ` Josh Poimboeuf
2018-01-09 12:36 ` Peter Zijlstra
2018-01-09 13:35 ` Thomas Gleixner
2018-01-09 13:40 ` Woodhouse, David
2018-01-07 22:11 ` [PATCH v6 02/10] x86/retpoline/crypto: Convert crypto assembler indirect jumps David Woodhouse
2018-01-08 13:49 ` Josh Poimboeuf
2018-01-07 22:11 ` [PATCH v6 03/10] x86/retpoline/entry: Convert entry " David Woodhouse
2018-01-07 22:11 ` [PATCH v6 04/10] x86/retpoline/ftrace: Convert ftrace " David Woodhouse
2018-01-07 22:11 ` [PATCH v6 05/10] x86/retpoline/hyperv: Convert " David Woodhouse
2018-01-07 22:11 ` [PATCH v6 06/10] x86/retpoline/xen: Convert Xen hypercall " David Woodhouse
2018-01-07 22:11 ` [PATCH v6 07/10] x86/retpoline/checksum32: Convert assembler " David Woodhouse
2018-01-07 22:11 ` [PATCH v6 08/10] x86/retpoline/irq32: " David Woodhouse
2018-01-07 22:11 ` [PATCH v6 09/10] x86/retpoline: Add boot time option to disable retpoline David Woodhouse
2018-01-07 22:11 ` [PATCH v6 10/10] x86/retpoline: Exclude objtool with retpoline David Woodhouse
2018-01-08 10:25 ` Thomas Gleixner
2018-01-08 10:34 ` Woodhouse, David
2018-01-08 13:20 ` Josh Poimboeuf
2018-01-07 22:22 ` [PATCH v6 00/10] Retpoline: Avoid speculative indirect calls in kernel Linus Torvalds
2018-01-08 10:01 ` Thomas Gleixner
2018-01-08 17:54 ` Ingo Molnar
2018-01-08 21:10 ` Thomas Gleixner
2018-01-08 10:34 ` Paul Turner
2018-01-08 10:38 ` Jiri Kosina
2018-01-08 10:45 ` Paul Turner
2018-01-08 10:42 ` Paul Turner
2018-01-08 11:16 ` Andrew Cooper
2018-01-08 11:25 ` Paul Turner
2018-01-08 16:13 ` Alexei Starovoitov
2018-01-10 15:20 ` Woodhouse, David [this message]
2018-01-10 15:31 ` Dr. David Alan Gilbert
2018-01-08 10:45 ` David Woodhouse
2018-01-08 10:53 ` Paul Turner
2018-01-08 12:49 ` David Woodhouse
2018-01-08 23:44 ` [PATCH v6 11/10] x86/retpoline: Avoid return buffer underflows on context switch David Woodhouse
2018-01-08 23:56 ` Linus Torvalds
2018-01-08 23:58 ` Woodhouse, David
2018-01-09 0:35 ` Linus Torvalds
2018-01-09 0:42 ` David Woodhouse
2018-01-09 0:48 ` Linus Torvalds
2018-01-09 0:55 ` David Woodhouse
2018-01-09 0:44 ` Andi Kleen
2018-01-09 0:58 ` Linus Torvalds
2018-01-09 1:15 ` Andrew Cooper
2018-01-09 3:27 ` Andy Lutomirski
2018-01-09 13:04 ` David Woodhouse
2018-01-09 13:10 ` Peter Zijlstra
2018-01-09 17:53 ` Kees Cook
2018-01-09 18:09 ` Linus Torvalds
2018-02-16 8:58 ` Pavel Machek
2018-01-09 1:16 ` Andi Kleen
2018-01-09 1:21 ` [PATCH v6 11/10] x86/retpoline: Avoid return buffer underflows on context switch II Andi Kleen
2018-01-09 1:23 ` Woodhouse, David
2018-01-09 1:49 ` Andi Kleen
2018-01-09 1:53 ` Paul Turner
2018-01-09 1:18 ` [PATCH v6 11/10] x86/retpoline: Avoid return buffer underflows on context switch Woodhouse, David
2018-01-09 0:06 ` Andi Kleen
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=1515597645.22302.187.camel@amazon.co.uk \
--to=dwmw@amazon.co.uk \
--cc=ak@linux.intel.com \
--cc=dave.hansen@intel.com \
--cc=gnomes@lxorguk.ukuu.org.uk \
--cc=gregkh@linux-foundation.org \
--cc=jikos@kernel.org \
--cc=keescook@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=riel@redhat.com \
--cc=tglx@linutronix.de \
--cc=thomas.lendacky@amd.com \
--cc=tim.c.chen@linux.intel.com \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome