]> git.baikalelectronics.ru Git - kernel.git/commitdiff
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 e5b0dd24b200aa5a62b4265c77a1c841476b7bad..4e7f3a8da16a65d3cf1d457380f1343a2ceba77f 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;