summaryrefslogtreecommitdiffstats
path: root/arch/x86/xen/mmu.c
diff options
context:
space:
mode:
authorAnton Arapov <anton@redhat.com>2012-05-15 10:24:02 +0200
committerAnton Arapov <anton@redhat.com>2012-05-15 10:24:02 +0200
commitfe2895d3d55146cac65b273c0f83e2c7e543cd0e (patch)
tree79e126e92ac8357191613fd166826bcb2cac0047 /arch/x86/xen/mmu.c
parentc0e33d8195b424eb29432998c565d09398933d32 (diff)
downloadkernel-uprobes-fe2895d3d55146cac65b273c0f83e2c7e543cd0e.tar.gz
kernel-uprobes-fe2895d3d55146cac65b273c0f83e2c7e543cd0e.tar.xz
kernel-uprobes-fe2895d3d55146cac65b273c0f83e2c7e543cd0e.zip
fedora kernel: be402e5a53d5ac42b5a17e0a207dae63a67f2786v3.3.6-1
Signed-off-by: Anton Arapov <anton@redhat.com>
Diffstat (limited to 'arch/x86/xen/mmu.c')
-rw-r--r--arch/x86/xen/mmu.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
index 95c1cf60c66..dc193478d91 100644
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -353,8 +353,13 @@ static pteval_t pte_mfn_to_pfn(pteval_t val)
{
if (val & _PAGE_PRESENT) {
unsigned long mfn = (val & PTE_PFN_MASK) >> PAGE_SHIFT;
+ unsigned long pfn = mfn_to_pfn(mfn);
+
pteval_t flags = val & PTE_FLAGS_MASK;
- val = ((pteval_t)mfn_to_pfn(mfn) << PAGE_SHIFT) | flags;
+ if (unlikely(pfn == ~0))
+ val = flags & ~_PAGE_PRESENT;
+ else
+ val = ((pteval_t)pfn << PAGE_SHIFT) | flags;
}
return val;