aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Kardashevskiy <aik@ozlabs.ru>2014-03-03 14:34:34 +1100
committerEli Qiao <taget@linux.vnet.ibm.com>2014-03-04 11:53:36 +0800
commit81896beeb0f634303ddf403741a7811c98f5b000 (patch)
tree9bbc93ce8c2db47db9125cf01445cc74d2796a18
parent3b0012731a25edb6802f4dd4228b27d44c070f26 (diff)
downloadpowerkvm-81896beeb0f634303ddf403741a7811c98f5b000.tar.gz
powerpc: vfio: remove incorrect put_page() for PR KVM
This fixes memory corruption which happens when VFIO is used with PR KVM. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
-rw-r--r--arch/powerpc/kvm/book3s_64_vio.c2
-rw-r--r--arch/powerpc/kvm/book3s_64_vio_hv.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/arch/powerpc/kvm/book3s_64_vio.c b/arch/powerpc/kvm/book3s_64_vio.c
index ead2e9979f8cd5..c3ebced251e493 100644
--- a/arch/powerpc/kvm/book3s_64_vio.c
+++ b/arch/powerpc/kvm/book3s_64_vio.c
@@ -558,7 +558,7 @@ long kvmppc_h_put_tce_indirect(struct kvm_vcpu *vcpu,
if (tces == ERROR_ADDR)
return H_TOO_HARD;
- if ((vcpu->arch.tce_rm_fail != TCERM_GETLISTPAGE) && pg)
+ if ((vcpu->arch.tce_rm_fail != TCERM_NONE) && pg)
put_page(pg);
if (vcpu->arch.tce_rm_fail == TCERM_PUTLISTPAGE)
diff --git a/arch/powerpc/kvm/book3s_64_vio_hv.c b/arch/powerpc/kvm/book3s_64_vio_hv.c
index c2eb0137a29f77..dd41fcdb7bfe15 100644
--- a/arch/powerpc/kvm/book3s_64_vio_hv.c
+++ b/arch/powerpc/kvm/book3s_64_vio_hv.c
@@ -417,7 +417,7 @@ long kvmppc_rm_h_put_tce_indirect(struct kvm_vcpu *vcpu,
tces = kvmppc_rm_gpa_to_hpa_and_get(vcpu, tce_list, &pg);
if (tces == ERROR_ADDR) {
- vcpu->arch.tce_rm_fail = pg ? TCERM_NONE : TCERM_GETLISTPAGE;
+ vcpu->arch.tce_rm_fail = pg ? TCERM_GETLISTPAGE : TCERM_NONE;
return H_TOO_HARD;
}