From: Roger Pau Monné Date: Wed, 31 Jul 2024 10:41:02 +0000 (+0200) Subject: x86/dom0: fix restoring %cr3 and the mapcache override on PV build error X-Git-Tag: 4.20.0-rc1~685 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=1fc3f77113dd43b14fa7ef5936dcdba120c0b63f;p=xen.git x86/dom0: fix restoring %cr3 and the mapcache override on PV build error 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é Reviewed-by: Jan Beulich --- diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c index d8043fa58a..57e58a02e7 100644 --- a/xen/arch/x86/pv/dom0_build.c +++ b/xen/arch/x86/pv/dom0_build.c @@ -825,6 +825,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; }