use PT_PHYSMASK on last level PTE entries to avoid returning invalid physical address

This commit is contained in:
Balazs Gerofi bgerofi@riken.jp
2014-04-15 20:21:07 +09:00
parent d090e3f28d
commit 0285c99c9c

View File

@ -413,7 +413,7 @@ static int __set_pt_page(struct page_table *pt, void *virt, unsigned long phys,
}
if (pt->entry[l1idx] & PFL1_PRESENT) {
if ((pt->entry[l1idx] & PAGE_MASK) != phys) {
if ((pt->entry[l1idx] & PT_PHYSMASK) != phys) {
return -EBUSY;
} else {
return 0;
@ -505,7 +505,7 @@ int ihk_mc_pt_virt_to_phys(struct page_table *pt,
return -EFAULT;
}
*phys = (pt->entry[l1idx] & PAGE_MASK) | (v & (PAGE_SIZE - 1));
*phys = (pt->entry[l1idx] & PT_PHYSMASK) | (v & (PAGE_SIZE - 1));
return 0;
}