Skip to contentSkip to conversation

mm: Fix Converting PTE to PFN

PATCH New Yosuke Iwamatsu 1 participant 1 message Oct 9, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 mm: Fix Converting PTE to PFN

On x86_64 system, (pte >> PAGE_SHIFT) is not always equal to page frame number because high bits (63:52) of pte may be used as flags. This patch corrects the conversion and errors as below disappear when applied.
(XEN) mm.c:3074:d0 PTE entry 200000a2ec6167 for address a1f09958 doesn't match frame a2ec6

xen/arch/x86/mm.c +0 -0
diff -r e66cecb66b1e xen/arch/x86/mm.c
@@ -3067,7 +3067,7 @@ static int destroy_grant_pte_mapping(
     ol1e = *(l1_pgentry_t *)va;
 
     /* Check that the virtual address supplied is actually mapped to

frame. */
- if ( unlikely((l1e_get_intpte(ol1e) >> PAGE_SHIFT) != frame) )
+ if ( unlikely(l1e_get_pfn(ol1e) != frame) )

     {
         page_unlock(page);
         MEM_LOG("PTE entry %lx for address %"PRIx64" doesn't match

frame %lx",