All of lore.kernel.org
 help / color / mirror / Atom feed
* Avoid speculative indirect calls in kernel
@ 2018-01-03 23:09 Andi Kleen
  2018-01-03 23:09 ` [PATCH 01/11] x86/retpoline: Define retpoline indirect thunk and macros Andi Kleen
                   ` (11 more replies)
  0 siblings, 12 replies; 101+ messages in thread
From: Andi Kleen @ 2018-01-03 23:09 UTC (permalink / raw)
  To: tglx; +Cc: torvalds, gregkh, dwmw, tim.c.chen, linux-kernel, dave.hansen

This is a fix for Variant 2 in 
https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html

Any speculative indirect calls in the kernel can be tricked 
to execute any kernel code, which may allow side channel
attacks that can leak arbitrary kernel data.

So we want to avoid speculative indirect calls in the kernel.

There's a special code sequence called a retpoline that can
do indirect calls without speculation. We use a new compiler
option -mindirect-branch=thunk-extern (gcc patch will be released
separately) to recompile the kernel with this new sequence.

We also patch all the assembler code in the kernel to use
the new sequence.

The patches were originally from David Woodhouse and Tim Chen,
but then reworked and enhanced by me.

No performance numbers at this point. 32bit is only boot tested.

Git tree available in 
git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-misc spec/retpoline-415-1

v1: Initial post.

^ permalink raw reply	[flat|nested] 101+ messages in thread

end of thread, other threads:[~2018-01-10 16:02 UTC | newest]

Thread overview: 101+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-03 23:09 Avoid speculative indirect calls in kernel Andi Kleen
2018-01-03 23:09 ` [PATCH 01/11] x86/retpoline: Define retpoline indirect thunk and macros Andi Kleen
2018-01-03 23:09 ` [PATCH 02/11] x86/retpoline/crypto: Convert crypto assembler indirect jumps Andi Kleen
2018-01-03 23:09 ` [PATCH 03/11] x86/retpoline/entry: Convert entry " Andi Kleen
2018-01-03 23:09 ` [PATCH 04/11] x86/retpoline/ftrace: Convert ftrace " Andi Kleen
2018-01-03 23:09 ` [PATCH 05/11] x86/retpoline/hyperv: Convert " Andi Kleen
2018-01-03 23:09 ` [PATCH 06/11] x86/retpoline/crypto: Convert xen " Andi Kleen
2018-01-03 23:09 ` [PATCH 07/11] x86/retpoline/checksum32: Convert " Andi Kleen
2018-01-03 23:09 ` [PATCH 08/11] x86/retpoline/irq32: " Andi Kleen
2018-01-03 23:09 ` [PATCH 09/11] x86/retpoline: Finally enable retpoline for C code Andi Kleen
2018-01-04  8:28   ` Greg KH
2018-01-04  8:30     ` Dave Hansen
2018-01-03 23:09 ` [PATCH 10/11] retpoline/taint: Taint kernel for missing retpoline in compiler Andi Kleen
2018-01-04  0:29   ` Thomas Gleixner
2018-01-04  0:35     ` Randy Dunlap
2018-01-03 23:09 ` [PATCH 11/11] retpoline/objtool: Disable some objtool warnings Andi Kleen
2018-01-03 23:51 ` Avoid speculative indirect calls in kernel Linus Torvalds
2018-01-04  0:00   ` Alan Cox
2018-01-04  0:09   ` Andi Kleen
2018-01-04  0:12     ` Thomas Gleixner
2018-01-04  0:15       ` Andi Kleen
2018-01-04  0:19         ` Jiri Kosina
2018-01-05  2:01           ` james harvey
2018-01-05 10:40             ` Woodhouse, David
2018-01-05 12:29               ` james harvey
2018-01-05 12:06             ` Alan Cox
2018-01-04  0:29         ` Alan Cox
2018-01-04  0:31           ` Thomas Gleixner
2018-01-04  0:38             ` Alan Cox
2018-01-04  0:40             ` Andi Kleen
2018-01-04  8:15               ` Woodhouse, David
2018-01-04 15:53                 ` Andi Kleen
2018-01-04 15:55                   ` Woodhouse, David
2018-01-04  0:20       ` Linus Torvalds
2018-01-04  0:26         ` Thomas Gleixner
2018-01-04  0:18     ` David Lang
2018-01-04  1:00   ` Paul Turner
2018-01-04  1:41   ` Paolo Bonzini
2018-01-04  1:59     ` Alan Cox
2018-01-04  2:11       ` Paolo Bonzini
2018-01-04  8:20         ` Woodhouse, David
2018-01-04 11:42           ` Pavel Machek
2018-01-04 11:47             ` Woodhouse, David
2018-01-04 14:20               ` Paolo Bonzini
2018-01-04 14:51                 ` Andrew Cooper
2018-01-04 15:29                   ` Woodhouse, David
2018-01-04 15:32                     ` Paolo Bonzini
2018-01-04 15:37                       ` Andrew Cooper
2018-01-04 16:15                     ` David Woodhouse
2018-01-04 20:00                       ` Tom Lendacky
2018-01-04 20:05                         ` David Woodhouse
2018-01-04 23:47                           ` Tom Lendacky
2018-01-05  0:06                             ` Andrew Cooper
2018-01-05  0:26                             ` Tom Lendacky
2018-01-04 16:52                     ` Andrea Arcangeli
2018-01-04 15:32                   ` Paolo Bonzini
2018-01-04 16:25                     ` Andrea Arcangeli
2018-01-04 17:04                       ` Alan Cox
2018-01-04 17:40                         ` Andrea Arcangeli
2018-01-04 17:13                       ` Dave Hansen
2018-01-04 17:15                         ` Paolo Bonzini
2018-01-04 18:05                           ` Andrea Arcangeli
2018-01-04 14:55                 ` Woodhouse, David
2018-01-04 18:24                 ` Pavel Machek
2018-01-04 19:57           ` Jon Masters
2018-01-05  0:41             ` Jon Masters
2018-01-05  0:54               ` Thomas Gleixner
2018-01-05  4:11                 ` Jon Masters
2018-01-05  9:59                   ` Thomas Gleixner
2018-01-08 10:28                     ` Andrea Arcangeli
2018-01-08 20:42                       ` [tip:x86/pti] x86/tboot: Unbreak tboot with PTI enabled tip-bot for Dave Hansen
2018-01-08 20:53                       ` Avoid speculative indirect calls in kernel Thomas Gleixner
2018-01-08 21:32                         ` Andrea Arcangeli
2018-01-10  0:45                           ` Thomas Gleixner
2018-01-10  1:11                             ` Dave Hansen
2018-01-10 16:02                               ` Thomas Gleixner
2018-01-05  6:49                 ` Willy Tarreau
2018-01-05  6:57                   ` Dave Hansen
2018-01-05  7:13                     ` Willy Tarreau
2018-01-07 14:14                       ` Borislav Petkov
2018-01-07 17:21                         ` David Lang
2018-01-07 18:49                           ` Borislav Petkov
2018-01-07 17:44                         ` Willy Tarreau
2018-01-07 18:55                           ` Borislav Petkov
2018-01-07 22:10                             ` Willy Tarreau
2018-01-08  9:18                               ` Thomas Gleixner
2018-01-08  9:29                                 ` Willy Tarreau
2018-01-08 16:22                               ` Borislav Petkov
2018-01-08 16:53                                 ` Willy Tarreau
2018-01-05 12:12                 ` Alan Cox
2018-01-09  1:44                   ` Samir Bellabes
     [not found]                 ` <CAL9bgJ8XNJgCtxR6+M+Vm9eDBVZ4Dyi_-Lt-Q1ei9N=TE2c6cg@mail.gmail.com>
2018-01-07  5:04                   ` Fwd: " Kiernan Hager
2018-01-07  6:39                     ` Willy Tarreau
2018-01-07 14:01                     ` Alan Cox
2018-01-07 17:47                       ` Willy Tarreau
2018-01-07 18:01                         ` Ivan Ivanov
2018-01-07 18:16                           ` Woodhouse, David
2018-01-04 11:26   ` Pavel Machek
2018-01-04 11:54     ` Alan Cox
2018-01-04 18:33     ` Linus Torvalds
2018-01-04 20:08       ` Jon Masters

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.