elf_check_broken() only needs to be invoked after elf_xen_parse() and after elf_load_binary().
Suggested-by: Jan Beulich <jbeul...@suse.com> Signed-off-by: Jane Malalane <jane.malal...@citrix.com> Reviewed-by: Jan Beulich <jbeul...@suse.com> --- CC: Jan Beulich <jbeul...@suse.com> CC: Andrew Cooper <andrew.coop...@citrix.com> CC: "Roger Pau Monné" <roger....@citrix.com> CC: Wei Liu <w...@xen.org> v2: * add into series * fixup ordering error with CONFIG_PV32 change --- xen/arch/x86/pv/dom0_build.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c index af47615b22..8712baccc1 100644 --- a/xen/arch/x86/pv/dom0_build.c +++ b/xen/arch/x86/pv/dom0_build.c @@ -400,8 +400,7 @@ int __init dom0_construct_pv(struct domain *d, if ( !compatible ) { printk("Mismatch between Xen and DOM0 kernel\n"); - rc = -EINVAL; - goto out; + return -EINVAL; } if ( parms.elf_notes[XEN_ELFNOTE_SUPPORTED_FEATURES].type != XEN_ENT_NONE ) @@ -409,8 +408,7 @@ int __init dom0_construct_pv(struct domain *d, if ( !pv_shim && !test_bit(XENFEAT_dom0, parms.f_supported) ) { printk("Kernel does not support Dom0 operation\n"); - rc = -EINVAL; - goto out; + return -EINVAL; } } @@ -607,8 +605,7 @@ int __init dom0_construct_pv(struct domain *d, : (v_start < HYPERVISOR_VIRT_END) && (v_end > HYPERVISOR_VIRT_START) ) { printk("DOM0 image overlaps with Xen private area.\n"); - rc = -EINVAL; - goto out; + return -EINVAL; } if ( compat ) @@ -753,8 +750,7 @@ int __init dom0_construct_pv(struct domain *d, mapcache_override_current(NULL); switch_cr3_cr4(current->arch.cr3, read_cr4()); printk("Invalid HYPERCALL_PAGE field in ELF notes.\n"); - rc = -EINVAL; - goto out; + return -EINVAL; } init_hypercall_page(d, _p(parms.virt_hypercall)); } -- 2.11.0