]> xenbits.xensource.com Git - xen.git/commitdiff
x86/dom0: fix restoring %cr3 and the mapcache override on PV build error
authorRoger Pau Monné <roger.pau@citrix.com>
Thu, 8 Aug 2024 11:55:53 +0000 (13:55 +0200)
committerJan Beulich <jbeulich@suse.com>
Thu, 8 Aug 2024 11:55:53 +0000 (13:55 +0200)
One of the error paths in the PV dom0 builder section that runs on the guest
page-tables wasn't restoring the Xen value of %cr3, neither removing the
mapcache override.

Fixes: 079ff2d32c3d ('libelf-loader: introduce elf_load_image')
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
master commit: 1fc3f77113dd43b14fa7ef5936dcdba120c0b63f
master date: 2024-07-31 12:41:02 +0200

xen/arch/x86/pv/dom0_build.c

index a62f0fa2ef29e5443074305bca55def89b0525d1..3e74cf4ea2fe2a5969a35d2246f3552d04d5168d 100644 (file)
@@ -821,6 +821,8 @@ int __init dom0_construct_pv(struct domain *d,
     rc = elf_load_binary(&elf);
     if ( rc < 0 )
     {
+        mapcache_override_current(NULL);
+        switch_cr3_cr4(current->arch.cr3, read_cr4());
         printk("Failed to load the kernel binary\n");
         goto out;
     }