diff options
author | Alexey Kardashevskiy <aik@ozlabs.ru> | 2014-03-03 14:34:34 +1100 |
---|---|---|
committer | Eli Qiao <taget@linux.vnet.ibm.com> | 2014-03-04 11:53:36 +0800 |
commit | 81896beeb0f634303ddf403741a7811c98f5b000 (patch) | |
tree | 9bbc93ce8c2db47db9125cf01445cc74d2796a18 | |
parent | 3b0012731a25edb6802f4dd4228b27d44c070f26 (diff) | |
download | powerkvm-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.c | 2 | ||||
-rw-r--r-- | arch/powerpc/kvm/book3s_64_vio_hv.c | 2 |
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; } |