KVM: MMU: Make gfn_to_page() always safe

In case the page is not present in the guest memory map, return a dummy
page the guest can scribble on.

This simplifies error checking in its users.

Signed-off-by: Izik Eidus <izike@qumranet.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
diff --git a/drivers/kvm/paging_tmpl.h b/drivers/kvm/paging_tmpl.h
index bab1b7f..572e5b6 100644
--- a/drivers/kvm/paging_tmpl.h
+++ b/drivers/kvm/paging_tmpl.h
@@ -72,8 +72,6 @@
 			    struct kvm_vcpu *vcpu, gva_t addr,
 			    int write_fault, int user_fault, int fetch_fault)
 {
-	hpa_t hpa;
-	struct kvm_memory_slot *slot;
 	struct page *page;
 	pt_element_t *table;
 	pt_element_t pte;
@@ -105,9 +103,8 @@
 		pgprintk("%s: table_gfn[%d] %lx\n", __FUNCTION__,
 			 walker->level - 1, table_gfn);
 
-		slot = gfn_to_memslot(vcpu->kvm, table_gfn);
-		hpa = safe_gpa_to_hpa(vcpu->kvm, pte & PT64_BASE_ADDR_MASK);
-		page = pfn_to_page(hpa >> PAGE_SHIFT);
+		page = gfn_to_page(vcpu->kvm, (pte & PT64_BASE_ADDR_MASK)
+				   >> PAGE_SHIFT);
 
 		table = kmap_atomic(page, KM_USER0);
 		pte = table[index];