x86/retpoline: Fill return stack buffer on vmexit
authorDavid Woodhouse <dwmw@amazon.co.uk>
Fri, 12 Jan 2018 11:11:27 +0000 (11:11 +0000)
committerThomas Gleixner <tglx@linutronix.de>
Fri, 12 Jan 2018 11:33:37 +0000 (12:33 +0100)
commit117cc7a908c83697b0b737d15ae1eb5943afe35b
tree3e1228c2d5e40a6de96ec00d74d8be22cacd79f4
parent7614e913db1f40fff819b36216484dc3808995d4
x86/retpoline: Fill return stack buffer on vmexit

In accordance with the Intel and AMD documentation, we need to overwrite
all entries in the RSB on exiting a guest, to prevent malicious branch
target predictions from affecting the host kernel. This is needed both
for retpoline and for IBRS.

[ak: numbers again for the RSB stuffing labels]

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: gnomes@lxorguk.ukuu.org.uk
Cc: Rik van Riel <riel@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: thomas.lendacky@amd.com
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Jiri Kosina <jikos@kernel.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: Kees Cook <keescook@google.com>
Cc: Tim Chen <tim.c.chen@linux.intel.com>
Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
Cc: Paul Turner <pjt@google.com>
Link: https://lkml.kernel.org/r/1515755487-8524-1-git-send-email-dwmw@amazon.co.uk
arch/x86/include/asm/nospec-branch.h
arch/x86/kvm/svm.c
arch/x86/kvm/vmx.c