KVM: x86: Bail to userspace if emulation of atomic user access faults
authorSean Christopherson <seanjc@google.com>
Wed, 2 Feb 2022 00:49:45 +0000 (00:49 +0000)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 13 Apr 2022 17:37:48 +0000 (13:37 -0400)
Exit to userspace when emulating an atomic guest access if the CMPXCHG on
the userspace address faults.  Emulating the access as a write and thus
likely treating it as emulated MMIO is wrong, as KVM has already
confirmed there is a valid, writable memslot.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220202004945.2540433-6-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/x86.c

index e5b0dd2..4e7f3a8 100644 (file)
@@ -7319,7 +7319,7 @@ static int emulator_cmpxchg_emulated(struct x86_emulate_ctxt *ctxt,
        }
 
        if (r < 0)
-               goto emul_write;
+               return X86EMUL_UNHANDLEABLE;
        if (r)
                return X86EMUL_CMPXCHG_FAILED;