static unsigned long dma_reserve __initdata;@@ -258,18 +257,18 @@ void __init init_extra_mapping_uc(unsign * to the compile time generated pmds. This results in invalid pmds up * to the point where we hit the physaddr 0 mapping. *- * We limit the mappings to the region from _text to _brk_end. _brk_end- * is rounded up to the 2MB boundary. This catches the invalid pmds as+ * We limit the mappings to the region from _text to _end. _end is+ * rounded up to the 2MB boundary. This catches the invalid pmds as * well, as they are located before _text: */ void __init cleanup_highmap(void) { unsigned long vaddr = __START_KERNEL_map;- unsigned long vaddr_end = __START_KERNEL_map + (max_pfn_mapped << PAGE_SHIFT);- unsigned long end = roundup((unsigned long)_brk_end, PMD_SIZE) - 1;+ unsigned long end = roundup((unsigned long)_end, PMD_SIZE) - 1; pmd_t *pmd = level2_kernel_pgt;+ pmd_t *last_pmd = pmd + PTRS_PER_PMD;