]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - arch/x86/kernel/head64.c
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux.git] / arch / x86 / kernel / head64.c
index 3b241f0ca005fcfc9a157d2bdff04ad69f0d34f8..c4f8d4659070db99ce190543186bc4a4ac5d2ac9 100644 (file)
@@ -27,6 +27,7 @@
 #include <asm/bios_ebda.h>
 #include <asm/bootparam_utils.h>
 #include <asm/microcode.h>
+#include <asm/kasan.h>
 
 /*
  * Manage page tables very early on.
@@ -46,7 +47,7 @@ static void __init reset_early_page_tables(void)
 
        next_early_pgt = 0;
 
-       write_cr3(__pa(early_level4_pgt));
+       write_cr3(__pa_nodebug(early_level4_pgt));
 }
 
 /* Create a new PMD entry */
@@ -59,7 +60,7 @@ int __init early_make_pgtable(unsigned long address)
        pmdval_t pmd, *pmd_p;
 
        /* Invalid address or early pgt is done ?  */
-       if (physaddr >= MAXMEM || read_cr3() != __pa(early_level4_pgt))
+       if (physaddr >= MAXMEM || read_cr3() != __pa_nodebug(early_level4_pgt))
                return -1;
 
 again:
@@ -160,6 +161,8 @@ asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data)
        /* Kill off the identity-map trampoline */
        reset_early_page_tables();
 
+       kasan_map_early_shadow(early_level4_pgt);
+
        /* clear bss before set_intr_gate with early_idt_handler */
        clear_bss();
 
@@ -181,6 +184,8 @@ asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data)
        /* set init_level4_pgt kernel high mapping*/
        init_level4_pgt[511] = early_level4_pgt[511];
 
+       kasan_map_early_shadow(init_level4_pgt);
+
        x86_64_start_reservations(real_mode_data);
 }