]> xenbits.xen.org Git - xenclient/kernel.git/commitdiff
imported patch maps2-patches/99-handle-xen-foreign-mappings.patch maps2-patches/maps2-add-proc-kpagemap-interface.patch
authort_jeang <devnull@localhost>
Tue, 6 Jan 2009 12:06:06 +0000 (12:06 +0000)
committert_jeang <devnull@localhost>
Tue, 6 Jan 2009 12:06:06 +0000 (12:06 +0000)
fs/proc/task_mmu.c

index 068348b1525d485496b00f85be41a842ca4637ee..7109cd990ef4fa675e0ed851032eaf4228afb90b 100644 (file)
@@ -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;
        }