aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.9.21/0010-KVM-VMX-Fix-rflags-cache-during-vCPU-reset.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.9.21/0010-KVM-VMX-Fix-rflags-cache-during-vCPU-reset.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.9.21/0010-KVM-VMX-Fix-rflags-cache-during-vCPU-reset.patch103
1 files changed, 0 insertions, 103 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.9.21/0010-KVM-VMX-Fix-rflags-cache-during-vCPU-reset.patch b/common/recipes-kernel/linux/linux-yocto-4.9.21/0010-KVM-VMX-Fix-rflags-cache-during-vCPU-reset.patch
deleted file mode 100644
index 7ab25b0b..00000000
--- a/common/recipes-kernel/linux/linux-yocto-4.9.21/0010-KVM-VMX-Fix-rflags-cache-during-vCPU-reset.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From fc18f773d54edfedf8875473d8e69753265a3dfd Mon Sep 17 00:00:00 2001
-From: Wanpeng Li <wanpeng.li@hotmail.com>
-Date: Mon, 20 Nov 2017 14:52:21 -0800
-Subject: [PATCH 10/33] KVM: VMX: Fix rflags cache during vCPU reset
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[ Upstream commit c37c28730bb031cc8a44a130c2555c0f3efbe2d0 ]
-
-Reported by syzkaller:
-
- *** Guest State ***
- CR0: actual=0x0000000080010031, shadow=0x0000000060000010, gh_mask=fffffffffffffff7
- CR4: actual=0x0000000000002061, shadow=0x0000000000000000, gh_mask=ffffffffffffe8f1
- CR3 = 0x000000002081e000
- RSP = 0x000000000000fffa RIP = 0x0000000000000000
- RFLAGS=0x00023000 DR7 = 0x00000000000000
- ^^^^^^^^^^
- ------------[ cut here ]------------
- WARNING: CPU: 6 PID: 24431 at /home/kernel/linux/arch/x86/kvm//x86.c:7302 kvm_arch_vcpu_ioctl_run+0x651/0x2ea0 [kvm]
- CPU: 6 PID: 24431 Comm: reprotest Tainted: G W OE 4.14.0+ #26
- RIP: 0010:kvm_arch_vcpu_ioctl_run+0x651/0x2ea0 [kvm]
- RSP: 0018:ffff880291d179e0 EFLAGS: 00010202
- Call Trace:
- kvm_vcpu_ioctl+0x479/0x880 [kvm]
- do_vfs_ioctl+0x142/0x9a0
- SyS_ioctl+0x74/0x80
- entry_SYSCALL_64_fastpath+0x23/0x9a
-
-The failed vmentry is triggered by the following beautified testcase:
-
- #include <unistd.h>
- #include <sys/syscall.h>
- #include <string.h>
- #include <stdint.h>
- #include <linux/kvm.h>
- #include <fcntl.h>
- #include <sys/ioctl.h>
-
- long r[5];
- int main()
- {
- struct kvm_debugregs dr = { 0 };
-
- r[2] = open("/dev/kvm", O_RDONLY);
- r[3] = ioctl(r[2], KVM_CREATE_VM, 0);
- r[4] = ioctl(r[3], KVM_CREATE_VCPU, 7);
- struct kvm_guest_debug debug = {
- .control = 0xf0403,
- .arch = {
- .debugreg[6] = 0x2,
- .debugreg[7] = 0x2
- }
- };
- ioctl(r[4], KVM_SET_GUEST_DEBUG, &debug);
- ioctl(r[4], KVM_RUN, 0);
- }
-
-which testcase tries to setup the processor specific debug
-registers and configure vCPU for handling guest debug events through
-KVM_SET_GUEST_DEBUG. The KVM_SET_GUEST_DEBUG ioctl will get and set
-rflags in order to set TF bit if single step is needed. All regs' caches
-are reset to avail and GUEST_RFLAGS vmcs field is reset to 0x2 during vCPU
-reset. However, the cache of rflags is not reset during vCPU reset. The
-function vmx_get_rflags() returns an unreset rflags cache value since
-the cache is marked avail, it is 0 after boot. Vmentry fails if the
-rflags reserved bit 1 is 0.
-
-This patch fixes it by resetting both the GUEST_RFLAGS vmcs field and
-its cache to 0x2 during vCPU reset.
-
-Reported-by: Dmitry Vyukov <dvyukov@google.com>
-Tested-by: Dmitry Vyukov <dvyukov@google.com>
-Reviewed-by: David Hildenbrand <david@redhat.com>
-Cc: Paolo Bonzini <pbonzini@redhat.com>
-Cc: Radim Krčmář <rkrcmar@redhat.com>
-Cc: Nadav Amit <nadav.amit@gmail.com>
-Cc: Dmitry Vyukov <dvyukov@google.com>
-Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/x86/kvm/vmx.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
-index 8e5001d..98f6545 100644
---- a/arch/x86/kvm/vmx.c
-+++ b/arch/x86/kvm/vmx.c
-@@ -5171,7 +5171,7 @@ static void vmx_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)
- vmcs_write64(GUEST_IA32_DEBUGCTL, 0);
- }
-
-- vmcs_writel(GUEST_RFLAGS, 0x02);
-+ kvm_set_rflags(vcpu, X86_EFLAGS_FIXED);
- kvm_rip_write(vcpu, 0xfff0);
-
- vmcs_writel(GUEST_GDTR_BASE, 0);
---
-2.7.4
-