[linux] 01/03: [x86] kvm: nVMX: Allow L1 to intercept software exceptions (#BP and #OF) (CVE-2016-9588)
debian-kernel at lists.debian.org
debian-kernel at lists.debian.org
Tue Mar 7 20:15:46 UTC 2017
This is an automated email from the git hooks/post-receive script.
benh pushed a commit to branch jessie-security
in repository linux.
commit b0db7e158a2a2f3e5a01bfa12ed62849b46e0b92
Author: Ben Hutchings <ben at decadent.org.uk>
Date: Tue Mar 7 20:10:57 2017 +0000
[x86] kvm: nVMX: Allow L1 to intercept software exceptions (#BP and #OF) (CVE-2016-9588)
---
debian/changelog | 5 ++
...o-intercept-software-exceptions-bp-and-of.patch | 62 ++++++++++++++++++++++
debian/patches/series | 1 +
3 files changed, 68 insertions(+)
diff --git a/debian/changelog b/debian/changelog
index 6c83b2d..540e922 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,6 @@
linux (3.16.39-1+deb8u2) UNRELEASED; urgency=medium
+ [ Salvatore Bonaccorso ]
* ipc/shm: Fix shmat mmap nil-page protection (CVE-2017-5669)
* sctp: avoid BUG_ON on sctp_wait_for_sndbuf (CVE-2017-5986)
* sctp: deny peeloff operation on asocs with threads sleeping on it
@@ -11,6 +12,10 @@ linux (3.16.39-1+deb8u2) UNRELEASED; urgency=medium
* TTY: n_hdlc, fix lockdep false positive
* tty: n_hdlc: get rid of racy n_hdlc.tbuf (CVE-2017-2636)
+ [ Ben Hutchings ]
+ * [x86] kvm: nVMX: Allow L1 to intercept software exceptions (#BP and #OF)
+ (CVE-2016-9588)
+
-- Salvatore Bonaccorso <carnil at debian.org> Tue, 07 Mar 2017 17:10:30 +0100
linux (3.16.39-1+deb8u1) jessie-security; urgency=high
diff --git a/debian/patches/bugfix/x86/kvm-nvmx-allow-l1-to-intercept-software-exceptions-bp-and-of.patch b/debian/patches/bugfix/x86/kvm-nvmx-allow-l1-to-intercept-software-exceptions-bp-and-of.patch
new file mode 100644
index 0000000..33878e2
--- /dev/null
+++ b/debian/patches/bugfix/x86/kvm-nvmx-allow-l1-to-intercept-software-exceptions-bp-and-of.patch
@@ -0,0 +1,62 @@
+From: Jim Mattson <jmattson at google.com>
+Date: Mon, 12 Dec 2016 11:01:37 -0800
+Subject: kvm: nVMX: Allow L1 to intercept software exceptions (#BP and #OF)
+Origin: https://git.kernel.org/linus/ef85b67385436ddc1998f45f1d6a210f935b3388
+Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2016-9588
+
+When L2 exits to L0 due to "exception or NMI", software exceptions
+(#BP and #OF) for which L1 has requested an intercept should be
+handled by L1 rather than L0. Previously, only hardware exceptions
+were forwarded to L1.
+
+Signed-off-by: Jim Mattson <jmattson at google.com>
+Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
+[bwh: Backported to 3.16: adjust context]
+Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+---
+ arch/x86/kvm/vmx.c | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+--- a/arch/x86/kvm/vmx.c
++++ b/arch/x86/kvm/vmx.c
+@@ -1073,10 +1073,10 @@ static inline int nested_cpu_has_ept(str
+ return nested_cpu_has2(vmcs12, SECONDARY_EXEC_ENABLE_EPT);
+ }
+
+-static inline bool is_exception(u32 intr_info)
++static inline bool is_nmi(u32 intr_info)
+ {
+ return (intr_info & (INTR_INFO_INTR_TYPE_MASK | INTR_INFO_VALID_MASK))
+- == (INTR_TYPE_HARD_EXCEPTION | INTR_INFO_VALID_MASK);
++ == (INTR_TYPE_NMI_INTR | INTR_INFO_VALID_MASK);
+ }
+
+ static void nested_vmx_vmexit(struct kvm_vcpu *vcpu, u32 exit_reason,
+@@ -4831,7 +4831,7 @@ static int handle_exception(struct kvm_v
+ if (is_machine_check(intr_info))
+ return handle_machine_check(vcpu);
+
+- if ((intr_info & INTR_INFO_INTR_TYPE_MASK) == INTR_TYPE_NMI_INTR)
++ if (is_nmi(intr_info))
+ return 1; /* already handled by vmx_vcpu_run() */
+
+ if (is_no_device(intr_info)) {
+@@ -6889,7 +6889,7 @@ static bool nested_vmx_exit_handled(stru
+
+ switch (exit_reason) {
+ case EXIT_REASON_EXCEPTION_NMI:
+- if (!is_exception(intr_info))
++ if (is_nmi(intr_info))
+ return 0;
+ else if (is_page_fault(intr_info))
+ return enable_ept;
+@@ -7186,8 +7186,7 @@ static void vmx_complete_atomic_exit(str
+ kvm_machine_check();
+
+ /* We need to handle NMIs before interrupts are enabled */
+- if ((exit_intr_info & INTR_INFO_INTR_TYPE_MASK) == INTR_TYPE_NMI_INTR &&
+- (exit_intr_info & INTR_INFO_VALID_MASK)) {
++ if (is_nmi(exit_intr_info)) {
+ kvm_before_handle_nmi(&vmx->vcpu);
+ asm("int $2");
+ kvm_after_handle_nmi(&vmx->vcpu);
diff --git a/debian/patches/series b/debian/patches/series
index edc5f31..f80c03a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -702,6 +702,7 @@ bugfix/all/net-llc-avoid-BUG_ON-in-skb_orphan.patch
bugfix/all/packet-fix-races-in-fanout_add.patch
bugfix/all/TTY-n_hdlc-fix-lockdep-false-positive.patch
bugfix/all/tty-n_hdlc-get-rid-of-racy-n_hdlc.tbuf.patch
+bugfix/x86/kvm-nvmx-allow-l1-to-intercept-software-exceptions-bp-and-of.patch
# Fix ABI changes
debian/of-fix-abi-changes.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/kernel/linux.git
More information about the Kernel-svn-changes
mailing list