KVM: PPC: Book3S: Make kvmppc_ld return a more accurate error indication
authorPaul Mackerras <paulus@samba.org>
Sat, 19 Jul 2014 07:59:36 +0000 (17:59 +1000)
committerAlexander Graf <agraf@suse.de>
Mon, 28 Jul 2014 13:23:16 +0000 (15:23 +0200)
commit1b2e33b071b13980a1f0823fbf139242059697b4
treeb0fa41220231de99d8ceea2298ac29e009659043
parentef1af2e29622ff3403926ae801a2b10da075a2de
KVM: PPC: Book3S: Make kvmppc_ld return a more accurate error indication

At present, kvmppc_ld calls kvmppc_xlate, and if kvmppc_xlate returns
any error indication, it returns -ENOENT, which is taken to mean an
HPTE not found error.  However, the error could have been a segment
found (no SLB entry) or a permission error.  Similarly,
kvmppc_pte_to_hva currently does permission checking, but any error
from it is taken by kvmppc_ld to mean that the access is an emulated
MMIO access.  Also, kvmppc_ld does no execute permission checking.

This fixes these problems by (a) returning any error from kvmppc_xlate
directly, (b) moving the permission check from kvmppc_pte_to_hva
into kvmppc_ld, and (c) adding an execute permission check to kvmppc_ld.

This is similar to what was done for kvmppc_st() by commit 82ff911317c3
("KVM: PPC: Deflect page write faults properly in kvmppc_st").

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