diff options
| author | David S. Miller <davem@davemloft.net> | 2012-05-16 22:17:37 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2012-05-16 22:17:37 -0400 |
| commit | 028940342a906db8da014a7603a0deddc2c323dd (patch) | |
| tree | 688dbc38a3e218f2493d311b1d70a67668837347 /arch/x86/xen/mmu.c | |
| parent | be3eed2e96340d3c7a4d1ea1d63e7bd6095d1e34 (diff) | |
| parent | 0e93b4b304ae052ba1bc73f6d34a68556fe93429 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'arch/x86/xen/mmu.c')
| -rw-r--r-- | arch/x86/xen/mmu.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index b8e279479a6b..69f5857660ac 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; |
