]> xenbits.xensource.com Git - xen.git/commitdiff
x86/boot: Allocate one extra module slot for Xen image placement
authorDaniel Kiper <daniel.kiper@oracle.com>
Mon, 8 Oct 2018 12:47:52 +0000 (14:47 +0200)
committerJan Beulich <jbeulich@suse.com>
Mon, 8 Oct 2018 12:47:52 +0000 (14:47 +0200)
Commit 9589927 (x86/mb2: avoid Xen image when looking for
module/crashkernel position) fixed relocation issues for
Multiboot2 protocol. Unfortunately it missed to allocate
module slot for Xen image placement in early boot path.
So, let's fix it right now.

Reported-by: Wei Liu <wei.liu2@citrix.com>
Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
master commit: 4c5f9dbebc0bd2afee1ecd936c74ffe65756950f
master date: 2018-09-27 11:17:47 +0100

xen/arch/x86/boot/reloc.c

index b992678b5eacd97502da1342bf9138ea09240595..6b7b551087ae77efc4c5afafeeec554a9f34073b 100644 (file)
@@ -144,7 +144,12 @@ static multiboot_info_t *mbi2_reloc(u32 mbi_in)
     if ( mbi_out->mods_count )
     {
         mbi_out->flags |= MBI_MODULES;
-        mbi_out->mods_addr = alloc_mem(mbi_out->mods_count * sizeof(*mbi_out_mods));
+        /*
+         * We have to allocate one more module slot here. At some point
+         * __start_xen() may put Xen image placement into it.
+         */
+        mbi_out->mods_addr = alloc_mem((mbi_out->mods_count + 1) *
+                                       sizeof(*mbi_out_mods));
         mbi_out_mods = _p(mbi_out->mods_addr);
     }