diff options
author | Alexey Kardashevskiy <aik@ozlabs.ru> | 2014-01-21 16:21:31 +1100 |
---|---|---|
committer | Eli Qiao <taget@linux.vnet.ibm.com> | 2014-01-22 10:26:27 +0800 |
commit | 65bbde44e6559437c2b9fbd17ed403510e2bfec3 (patch) | |
tree | 0d2b93ece364682ea1dc6817aeb4a4cd17135ec3 | |
parent | b4b9d6ec24825ed09a74a24ff7ea07c9c07cc7a8 (diff) | |
download | powerkvm-65bbde44e6559437c2b9fbd17ed403510e2bfec3.tar.gz |
vfio: fix realmode guest phys address converter
This fixes a bug with not resetting page struct pointer
which caused bugs in calling code.
Suggested-by: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
-rw-r--r-- | arch/powerpc/kvm/book3s_64_vio_hv.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/powerpc/kvm/book3s_64_vio_hv.c b/arch/powerpc/kvm/book3s_64_vio_hv.c index 22f09d85ce867f..6b54a0c9f50af2 100644 --- a/arch/powerpc/kvm/book3s_64_vio_hv.c +++ b/arch/powerpc/kvm/book3s_64_vio_hv.c @@ -213,8 +213,10 @@ static unsigned long kvmppc_rm_gpa_to_hpa_and_get(struct kvm_vcpu *vcpu, /* Increase page counter */ *pg = realmode_pfn_to_page(pte_pfn(pte)); - if (!*pg || PageCompound(*pg) || !get_page_unless_zero(*pg)) + if (!*pg || PageCompound(*pg) || !get_page_unless_zero(*pg)) { + *pg = NULL; return ERROR_ADDR; + } hpa = (pte_pfn(pte) << PAGE_SHIFT) + (gpa & ((1 << shift) - 1)); |