summaryrefslogtreecommitdiffstats
path: root/virt/kvm
diff options
context:
space:
mode:
authorXiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>2012-08-03 09:42:10 +0200
committerAvi Kivity <avi@redhat.com>2012-08-06 15:04:57 +0200
commitcb9aaa30b133574b646d9d4766ef08a843211393 (patch)
tree214d3b1dd115573d1aea11d2f4dafe525a1ac674 /virt/kvm
parentKVM: introduce KVM_ERR_PTR_BAD_PAGE (diff)
downloadlinux-cb9aaa30b133574b646d9d4766ef08a843211393.tar.xz
linux-cb9aaa30b133574b646d9d4766ef08a843211393.zip
KVM: do not release the error pfn
After commit a2766325cf9f9, the error pfn is replaced by the error code, it need not be released anymore [ The patch has been compiling tested for powerpc ] Signed-off-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com> Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'virt/kvm')
-rw-r--r--virt/kvm/iommu.c1
-rw-r--r--virt/kvm/kvm_main.c14
2 files changed, 8 insertions, 7 deletions
diff --git a/virt/kvm/iommu.c b/virt/kvm/iommu.c
index 6a67bea4019c..037cb6730e68 100644
--- a/virt/kvm/iommu.c
+++ b/virt/kvm/iommu.c
@@ -107,7 +107,6 @@ int kvm_iommu_map_pages(struct kvm *kvm, struct kvm_memory_slot *slot)
*/
pfn = kvm_pin_pages(slot, gfn, page_size);
if (is_error_pfn(pfn)) {
- kvm_release_pfn_clean(pfn);
gfn += 1;
continue;
}
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 93d3c6e063c8..eafba99d1070 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -102,9 +102,6 @@ static bool largepages_enabled = true;
bool kvm_is_mmio_pfn(pfn_t pfn)
{
- if (is_error_pfn(pfn))
- return false;
-
if (pfn_valid(pfn)) {
int reserved;
struct page *tail = pfn_to_page(pfn);
@@ -1165,10 +1162,13 @@ EXPORT_SYMBOL_GPL(gfn_to_page_many_atomic);
static struct page *kvm_pfn_to_page(pfn_t pfn)
{
- WARN_ON(kvm_is_mmio_pfn(pfn));
+ if (is_error_pfn(pfn))
+ return KVM_ERR_PTR_BAD_PAGE;
- if (is_error_pfn(pfn) || kvm_is_mmio_pfn(pfn))
+ if (kvm_is_mmio_pfn(pfn)) {
+ WARN_ON(1);
return KVM_ERR_PTR_BAD_PAGE;
+ }
return pfn_to_page(pfn);
}
@@ -1193,7 +1193,9 @@ EXPORT_SYMBOL_GPL(kvm_release_page_clean);
void kvm_release_pfn_clean(pfn_t pfn)
{
- if (!is_error_pfn(pfn) && !kvm_is_mmio_pfn(pfn))
+ WARN_ON(is_error_pfn(pfn));
+
+ if (!kvm_is_mmio_pfn(pfn))
put_page(pfn_to_page(pfn));
}
EXPORT_SYMBOL_GPL(kvm_release_pfn_clean);