From 21dd5dfb1bf94dc4b5eb0a8f119a81f9eeddd1db Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 11 Aug 2022 17:26:10 +0200 Subject: [PATCH] 4.9-stable patches added patches: kvm-svm-don-t-bug-if-userspace-injects-an-interrupt-with-gif-0.patch --- ...pace-injects-an-interrupt-with-gif-0.patch | 62 +++++++++++++++++++ queue-4.9/series | 1 + 2 files changed, 63 insertions(+) create mode 100644 queue-4.9/kvm-svm-don-t-bug-if-userspace-injects-an-interrupt-with-gif-0.patch diff --git a/queue-4.9/kvm-svm-don-t-bug-if-userspace-injects-an-interrupt-with-gif-0.patch b/queue-4.9/kvm-svm-don-t-bug-if-userspace-injects-an-interrupt-with-gif-0.patch new file mode 100644 index 00000000000..b1914a1f93b --- /dev/null +++ b/queue-4.9/kvm-svm-don-t-bug-if-userspace-injects-an-interrupt-with-gif-0.patch @@ -0,0 +1,62 @@ +From f17c31c48e5cde9895a491d91c424eeeada3e134 Mon Sep 17 00:00:00 2001 +From: "Maciej S. Szmigiero" +Date: Mon, 2 May 2022 00:07:26 +0200 +Subject: KVM: SVM: Don't BUG if userspace injects an interrupt with GIF=0 + +From: Maciej S. Szmigiero + +commit f17c31c48e5cde9895a491d91c424eeeada3e134 upstream. + +Don't BUG/WARN on interrupt injection due to GIF being cleared, +since it's trivial for userspace to force the situation via +KVM_SET_VCPU_EVENTS (even if having at least a WARN there would be correct +for KVM internally generated injections). + + kernel BUG at arch/x86/kvm/svm/svm.c:3386! + invalid opcode: 0000 [#1] SMP + CPU: 15 PID: 926 Comm: smm_test Not tainted 5.17.0-rc3+ #264 + Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 + RIP: 0010:svm_inject_irq+0xab/0xb0 [kvm_amd] + Code: <0f> 0b 0f 1f 00 0f 1f 44 00 00 80 3d ac b3 01 00 00 55 48 89 f5 53 + RSP: 0018:ffffc90000b37d88 EFLAGS: 00010246 + RAX: 0000000000000000 RBX: ffff88810a234ac0 RCX: 0000000000000006 + RDX: 0000000000000000 RSI: ffffc90000b37df7 RDI: ffff88810a234ac0 + RBP: ffffc90000b37df7 R08: ffff88810a1fa410 R09: 0000000000000000 + R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 + R13: ffff888109571000 R14: ffff88810a234ac0 R15: 0000000000000000 + FS: 0000000001821380(0000) GS:ffff88846fdc0000(0000) knlGS:0000000000000000 + CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 + CR2: 00007f74fc550008 CR3: 000000010a6fe000 CR4: 0000000000350ea0 + Call Trace: + + inject_pending_event+0x2f7/0x4c0 [kvm] + kvm_arch_vcpu_ioctl_run+0x791/0x17a0 [kvm] + kvm_vcpu_ioctl+0x26d/0x650 [kvm] + __x64_sys_ioctl+0x82/0xb0 + do_syscall_64+0x3b/0xc0 + entry_SYSCALL_64_after_hwframe+0x44/0xae + + +Fixes: 219b65dcf6c0 ("KVM: SVM: Improve nested interrupt injection") +Cc: stable@vger.kernel.org +Co-developed-by: Sean Christopherson +Signed-off-by: Sean Christopherson +Signed-off-by: Maciej S. Szmigiero +Message-Id: <35426af6e123cbe91ec7ce5132ce72521f02b1b5.1651440202.git.maciej.szmigiero@oracle.com> +Signed-off-by: Paolo Bonzini +Signed-off-by: Greg Kroah-Hartman +--- + arch/x86/kvm/svm.c | 2 -- + 1 file changed, 2 deletions(-) + +--- a/arch/x86/kvm/svm.c ++++ b/arch/x86/kvm/svm.c +@@ -4492,8 +4492,6 @@ static void svm_set_irq(struct kvm_vcpu + { + struct vcpu_svm *svm = to_svm(vcpu); + +- BUG_ON(!(gif_set(svm))); +- + trace_kvm_inj_virq(vcpu->arch.interrupt.nr); + ++vcpu->stat.irq_injections; + diff --git a/queue-4.9/series b/queue-4.9/series index 2e6a958c2be..60d75614f80 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -26,3 +26,4 @@ makefile-link-with-z-noexecstack-no-warn-rwx-segments.patch x86-link-vdso-and-boot-with-z-noexecstack-no-warn-rwx-segments.patch alsa-bcd2000-fix-a-uaf-bug-on-the-error-path-of-probing.patch add-barriers-to-buffer_uptodate-and-set_buffer_uptodate.patch +kvm-svm-don-t-bug-if-userspace-injects-an-interrupt-with-gif-0.patch -- 2.47.3