]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - arch/x86/kernel/head64.c
x86_64: add KASan support
[mirror_ubuntu-bionic-kernel.git] / arch / x86 / kernel / head64.c
index eda1a865641e2e86f01961265619ab0484b96631..efcddfaf05f9f94f41b20d1a5a99c851e9b09a3b 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:
@@ -158,6 +159,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();
 
@@ -179,6 +182,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);
 }