From: t_jeang Date: Tue, 6 Jan 2009 12:06:06 +0000 (+0000) Subject: imported patch maps2-patches/99-handle-xen-foreign-mappings.patch X-Git-Tag: maps2-patches/maps2-add-proc-kpagemap-interface.patch X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=5f6d334adbb6e9b1cf269441551227a2d5c4c321;p=xenclient%2Fkernel.git imported patch maps2-patches/99-handle-xen-foreign-mappings.patch --- diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 068348b1..7109cd99 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -584,6 +584,7 @@ static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end, struct pagemapread *pm = private; pte_t *pte; int err; + unsigned long pfn; pte = pte_offset_map(pmd, addr); @@ -597,10 +598,13 @@ static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end, for (; addr != end; pte++, addr += PAGE_SIZE) { if (addr < pm->next) continue; - if (!pte_present(*pte)) - err = add_to_pagemap(addr, -1, pm); - else - err = add_to_pagemap(addr, pte_pfn(*pte), pm); + pfn = -1; + if (pte_present(*pte)) { + pfn = pte_pfn(*pte); + if (!pfn_valid(pfn)) + pfn = -1; + } + err = add_to_pagemap(addr, pfn, pm); if (err) return err; }