aboutsummaryrefslogtreecommitdiffstats
path: root/virt
diff options
context:
space:
mode:
authorXiao Guangrong2012-08-03 02:42:10 -0500
committerAvi Kivity2012-08-06 08:04:57 -0500
commitcb9aaa30b133574b646d9d4766ef08a843211393 (patch)
tree214d3b1dd115573d1aea11d2f4dafe525a1ac674 /virt
parent6cede2e6794be6b0649f62d3681e0c4aff5a9270 (diff)
downloadkernel-video-cb9aaa30b133574b646d9d4766ef08a843211393.tar.gz
kernel-video-cb9aaa30b133574b646d9d4766ef08a843211393.tar.xz
kernel-video-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')
-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 6a67bea4019..037cb6730e6 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)
107 */ 107 */
108 pfn = kvm_pin_pages(slot, gfn, page_size); 108 pfn = kvm_pin_pages(slot, gfn, page_size);
109 if (is_error_pfn(pfn)) { 109 if (is_error_pfn(pfn)) {
110 kvm_release_pfn_clean(pfn);
111 gfn += 1; 110 gfn += 1;
112 continue; 111 continue;
113 } 112 }
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 93d3c6e063c..eafba99d107 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -102,9 +102,6 @@ static bool largepages_enabled = true;
102 102
103bool kvm_is_mmio_pfn(pfn_t pfn) 103bool kvm_is_mmio_pfn(pfn_t pfn)
104{ 104{
105 if (is_error_pfn(pfn))
106 return false;
107
108 if (pfn_valid(pfn)) { 105 if (pfn_valid(pfn)) {
109 int reserved; 106 int reserved;
110 struct page *tail = pfn_to_page(pfn); 107 struct page *tail = pfn_to_page(pfn);
@@ -1165,10 +1162,13 @@ EXPORT_SYMBOL_GPL(gfn_to_page_many_atomic);
1165 1162
1166static struct page *kvm_pfn_to_page(pfn_t pfn) 1163static struct page *kvm_pfn_to_page(pfn_t pfn)
1167{ 1164{
1168 WARN_ON(kvm_is_mmio_pfn(pfn)); 1165 if (is_error_pfn(pfn))
1166 return KVM_ERR_PTR_BAD_PAGE;
1169 1167
1170 if (is_error_pfn(pfn) || kvm_is_mmio_pfn(pfn)) 1168 if (kvm_is_mmio_pfn(pfn)) {
1169 WARN_ON(1);
1171 return KVM_ERR_PTR_BAD_PAGE; 1170 return KVM_ERR_PTR_BAD_PAGE;
1171 }
1172 1172
1173 return pfn_to_page(pfn); 1173 return pfn_to_page(pfn);
1174} 1174}
@@ -1193,7 +1193,9 @@ EXPORT_SYMBOL_GPL(kvm_release_page_clean);
1193 1193
1194void kvm_release_pfn_clean(pfn_t pfn) 1194void kvm_release_pfn_clean(pfn_t pfn)
1195{ 1195{
1196 if (!is_error_pfn(pfn) && !kvm_is_mmio_pfn(pfn)) 1196 WARN_ON(is_error_pfn(pfn));
1197
1198 if (!kvm_is_mmio_pfn(pfn))
1197 put_page(pfn_to_page(pfn)); 1199 put_page(pfn_to_page(pfn));
1198} 1200}
1199EXPORT_SYMBOL_GPL(kvm_release_pfn_clean); 1201EXPORT_SYMBOL_GPL(kvm_release_pfn_clean);