KVM: x86: fix uninitialized variable use on KVM_REQ_TRIPLE_FAULT
authorPaolo Bonzini <pbonzini@redhat.com>
Wed, 30 Nov 2022 16:14:35 +0000 (11:14 -0500)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 30 Nov 2022 16:50:39 +0000 (11:50 -0500)
If a triple fault was fixed by kvm_x86_ops.nested_ops->triple_fault (by
turning it into a vmexit), there is no need to leave vcpu_enter_guest().
Any vcpu->requests will be caught later before the actual vmentry,
and in fact vcpu_enter_guest() was not initializing the "r" variable.
Depending on the compiler's whims, this could cause the
x86_64/triple_fault_event_test test to fail.

Cc: Maxim Levitsky <mlevitsk@redhat.com>
Fixes: 92e7d5c83aff ("KVM: x86: allow L1 to not intercept triple fault")
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/x86.c

index 246bdc9a915472b97ffbe50405d6d39d7864977b..7f850dfb40861cce8fb0ae2377653750bee41aa0 100644 (file)
@@ -10280,8 +10280,8 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
                                vcpu->run->exit_reason = KVM_EXIT_SHUTDOWN;
                                vcpu->mmio_needed = 0;
                                r = 0;
+                               goto out;
                        }
-                       goto out;
                }
                if (kvm_check_request(KVM_REQ_APF_HALT, vcpu)) {
                        /* Page is swapped out. Do synthetic halt */