Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1755fbcc6666906cada43c1c839ca1fc6616d4a6
Commit:     1755fbcc6666906cada43c1c839ca1fc6616d4a6
Parent:     38c335f1f57bd9edc3cd894e8f5f3fc133320ad3
Author:     Avi Kivity <[EMAIL PROTECTED]>
AuthorDate: Wed Nov 21 14:44:45 2007 +0200
Committer:  Avi Kivity <[EMAIL PROTECTED]>
CommitDate: Wed Jan 30 17:53:11 2008 +0200

    KVM: MMU: Introduce gfn_to_gpa()
    
    Converting a frame number to an address is tricky since the data type 
changes
    size.  Introduce a function to do it.  This fixes an actual bug when
    accessing guest ptes.
    
    Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>
---
 drivers/kvm/kvm.h         |    4 ++++
 drivers/kvm/paging_tmpl.h |    4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kvm.h
index 048849d..eda82cd 100644
--- a/drivers/kvm/kvm.h
+++ b/drivers/kvm/kvm.h
@@ -499,6 +499,10 @@ static inline int memslot_id(struct kvm *kvm, struct 
kvm_memory_slot *slot)
        return slot - kvm->memslots;
 }
 
+static inline gpa_t gfn_to_gpa(gfn_t gfn)
+{
+       return (gpa_t)gfn << PAGE_SHIFT;
+}
 
 enum kvm_stat_kind {
        KVM_STAT_VM,
diff --git a/drivers/kvm/paging_tmpl.h b/drivers/kvm/paging_tmpl.h
index a3da98b..b24bc7c 100644
--- a/drivers/kvm/paging_tmpl.h
+++ b/drivers/kvm/paging_tmpl.h
@@ -110,7 +110,7 @@ static int FNAME(walk_addr)(struct guest_walker *walker,
                index = PT_INDEX(addr, walker->level);
 
                table_gfn = gpte_to_gfn(pte);
-               pte_gpa = table_gfn << PAGE_SHIFT;
+               pte_gpa = gfn_to_gpa(table_gfn);
                pte_gpa += index * sizeof(pt_element_t);
                walker->table_gfn[walker->level - 1] = table_gfn;
                pgprintk("%s: table_gfn[%d] %lx\n", __FUNCTION__,
@@ -442,7 +442,7 @@ static gpa_t FNAME(gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t 
vaddr)
        r = FNAME(walk_addr)(&walker, vcpu, vaddr, 0, 0, 0);
 
        if (r) {
-               gpa = (gpa_t)walker.gfn << PAGE_SHIFT;
+               gpa = gfn_to_gpa(walker.gfn);
                gpa |= vaddr & ~PAGE_MASK;
        }
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to