]> xenbits.xensource.com Git - legacy/linux-2.6.18-xen.git/commitdiff
xen/x86-64: fix phys_pmd_init() (regression from c/s 547)
authorKeir Fraser <keir.fraser@citrix.com>
Fri, 29 May 2009 08:17:16 +0000 (09:17 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Fri, 29 May 2009 08:17:16 +0000 (09:17 +0100)
I didn't pay attention to the fact that 'end' must always be an upper
bound, while xen_start_info->nr_pages must be additionally during
boot.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
arch/x86_64/mm/init-xen.c

index 00ffa5ee6c35f83a5aa181ad32dea0a3d6ac1bbd..a977e43d87649e31070decd233abab1197f70eca 100644 (file)
@@ -457,9 +457,9 @@ phys_pmd_init(pmd_t *pmd, unsigned long address, unsigned long end)
                for (k = 0; k < PTRS_PER_PTE; pte++, k++, address += PTE_SIZE) {
                        unsigned long pteval = address | _PAGE_NX | _KERNPG_TABLE;
 
-                       if (address >= (after_bootmem
-                                       ? end
-                                       : xen_start_info->nr_pages << PAGE_SHIFT))
+                       if (address >= end ||
+                           (!after_bootmem &&
+                            (address >> PAGE_SHIFT) >= xen_start_info->nr_pages))
                                pteval = 0;
                        else if (make_readonly(address))
                                pteval &= ~_PAGE_RW;