KVM: PPC: Deflect page write faults properly in kvmppc_st
authorAlexander Graf <agraf@suse.de>
Thu, 10 Jul 2014 17:19:35 +0000 (19:19 +0200)
committerAlexander Graf <agraf@suse.de>
Mon, 28 Jul 2014 13:23:10 +0000 (15:23 +0200)
When we have a page that we're not allowed to write to, xlate() will already
tell us -EPERM on lookup of that page. With the code as is we change it into
a "page missing" error which a guest may get confused about. Instead, just
tell the caller about the -EPERM directly.

This fixes Mac OS X guests when run with DCBZ32 emulation.

Signed-off-by: Alexander Graf <agraf@suse.de>
arch/powerpc/kvm/book3s.c

index bd75902b38ba4d918d860495e0d829b1b16d2dd8..9624c56441035dd98ee7f9a04041d0f1d2801b08 100644 (file)
@@ -418,11 +418,13 @@ int kvmppc_st(struct kvm_vcpu *vcpu, ulong *eaddr, int size, void *ptr,
              bool data)
 {
        struct kvmppc_pte pte;
+       int r;
 
        vcpu->stat.st++;
 
-       if (kvmppc_xlate(vcpu, *eaddr, data, true, &pte))
-               return -ENOENT;
+       r = kvmppc_xlate(vcpu, *eaddr, data, true, &pte);
+       if (r < 0)
+               return r;
 
        *eaddr = pte.raddr;