From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1ignQf-00076L-V7 for mharc-grub-devel@gnu.org; Mon, 16 Dec 2019 05:16:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51201) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ignQc-00075p-UM for grub-devel@gnu.org; Mon, 16 Dec 2019 05:16:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ignQb-00005k-QQ for grub-devel@gnu.org; Mon, 16 Dec 2019 05:16:38 -0500 Received: from mga11.intel.com ([192.55.52.93]:48957) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ignQb-0008Tk-DB for grub-devel@gnu.org; Mon, 16 Dec 2019 05:16:37 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Dec 2019 02:16:34 -0800 X-IronPort-AV: E=Sophos;i="5.69,321,1571727600"; d="scan'208";a="209256034" Received: from lhawrylk-desk.igk.intel.com ([10.102.89.27]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Dec 2019 02:16:33 -0800 From: Lukasz Hawrylko To: grub-devel@gnu.org Cc: daniel.kiper@oracle.com, Lukasz Hawrylko Subject: [PATCH v2] multiboot2: set min address for mbi allocation to 0x1000 Date: Mon, 16 Dec 2019 11:15:55 +0100 Message-Id: <20191216101555.30362-1-lukasz.hawrylko@linux.intel.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 192.55.52.93 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Dec 2019 10:16:40 -0000 In some cases GRUB2 allocates multiboot2 structure at 0 address, that is a confusing behavior. Consumers of that structure can have internal NULL-checks that will throw an error when get a pointer to data allocated at address 0. To prevent that, define min address for mbi allocation in x86 and x86_64 platforms. Signed-off-by: Lukasz Hawrylko Reviewed-by: Daniel Kiper --- grub-core/loader/multiboot_mbi2.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/grub-core/loader/multiboot_mbi2.c b/grub-core/loader/multiboot_mbi2.c index 53da78615..18e766c7b 100644 --- a/grub-core/loader/multiboot_mbi2.c +++ b/grub-core/loader/multiboot_mbi2.c @@ -48,6 +48,12 @@ #define HAS_VGA_TEXT 0 #endif +#if defined (__i386__) || defined (__x86_64__) +#define MBI_MIN_ADDR 0x1000 +#else +#define MBI_MIN_ADDR 0 +#endif + struct module { struct module *next; @@ -708,7 +714,7 @@ grub_multiboot2_make_mbi (grub_uint32_t *target) COMPILE_TIME_ASSERT (MULTIBOOT_TAG_ALIGN % sizeof (grub_properly_aligned_t) == 0); err = grub_relocator_alloc_chunk_align (grub_multiboot2_relocator, &ch, - 0, 0xffffffff - bufsize, + MBI_MIN_ADDR, 0xffffffff - bufsize, bufsize, MULTIBOOT_TAG_ALIGN, GRUB_RELOCATOR_PREFERENCE_NONE, 1); if (err) -- 2.20.1