From 0285c99c9cb8ed7e28d1ba7347b6343100adb937 Mon Sep 17 00:00:00 2001 From: "Balazs Gerofi bgerofi@riken.jp" Date: Tue, 15 Apr 2014 20:21:07 +0900 Subject: [PATCH] use PT_PHYSMASK on last level PTE entries to avoid returning invalid physical address --- arch/x86/kernel/memory.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/memory.c b/arch/x86/kernel/memory.c index c765cb49..18ce51b6 100644 --- a/arch/x86/kernel/memory.c +++ b/arch/x86/kernel/memory.c @@ -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; }