Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp466826ybz; Wed, 15 Apr 2020 12:09:08 -0700 (PDT) X-Google-Smtp-Source: APiQypJJnzbKJW0gzpx8PbGNZbSBb3KIRvGU5KEXwLBstcGvoV+quhDRIU/ZkEdPwtotIlrPszy2 X-Received: by 2002:a05:6402:1d1c:: with SMTP id dg28mr24563479edb.135.1586977747859; Wed, 15 Apr 2020 12:09:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586977747; cv=none; d=google.com; s=arc-20160816; b=lfv9LSIfdwzhZmHlSmncOjvYFKC7qGJ4L+4BpWaBr6fJwJLJ8sME72t1vKdA6k1qwu 3+CIkVCC4YNEvdSqft5Wx7HL1yzsYK5LrhJ6aRx9se0OouyAhOgxgf2JW6/MAfBBqxKo CrpjdMYcjXumVvZnGDh/TBSyW6N5BeczVt5A3rmQAgaEmPNc56j5hiJMBFg2k0ay3sDq xc6xuMTfO/WsfGHBevs5xGB1OE/xOcoVsYdEZVRYnfxJ6NkAfFYdDY2Qvc4jgk2qj1uA zk/lb9bc6GLwPvDzQWFQpFeRyVuMKzSocpueN7QxG8VP/PAlY4ocghg7ZPvFLdlKHEFY DoBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :robot-unsubscribe:robot-id:message-id:mime-version:references :in-reply-to:cc:subject:to:reply-to:from:date; bh=9JuEYXWgohUJDw6S80ZSjhGfOSFIJo/dVaCNzPlLvtk=; b=B0Ai5J7jFhI0ORFZ1kE54Ut2i4ywGOuS8ZoOzN7jcPsFlp0VDL5nD7DCW6daME4sWt kTCpcvJMbykYAxNDhassz1cLE4UKyDT/FHoNA7r4M8w+jAXIqdT1huP8DapNbDb84fHB XNePl9dXIMpi0M+YhtgtRgezfLyH+6Pyopp8NU3+url+3TQ3T3deuiXjZOnOmqdwaXLb ITpzROidtWRvLoZpRpM4hRgcItbMGFZ4E8difvC0c6vmZB4Q1qgE4sn5r5FpNMvTJby3 6HXagMhFTGMYq44W1adh2YSGwzEB0qmvv0S5uHO6YSc18bX8uVJpWxx/VruMDrIwzEmK O+Lg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y7si2686715edv.512.2020.04.15.12.08.43; Wed, 15 Apr 2020 12:09:07 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2436660AbgDNIX6 (ORCPT + 99 others); Tue, 14 Apr 2020 04:23:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37696 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S2407133AbgDNIU4 (ORCPT ); Tue, 14 Apr 2020 04:20:56 -0400 Received: from Galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 25F57C00860E; Tue, 14 Apr 2020 01:20:56 -0700 (PDT) Received: from [5.158.153.53] (helo=tip-bot2.lab.linutronix.de) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1jOGoO-0006Ik-6C; Tue, 14 Apr 2020 10:20:52 +0200 Received: from [127.0.1.1] (localhost [IPv6:::1]) by tip-bot2.lab.linutronix.de (Postfix) with ESMTP id BF2E91C0450; Tue, 14 Apr 2020 10:20:51 +0200 (CEST) Date: Tue, 14 Apr 2020 08:20:51 -0000 From: "tip-bot2 for Arvind Sankar" Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: efi/urgent] efi/x86: Move efi stub globals from .bss to .data Cc: Sergey Shatunov , Arvind Sankar , Ard Biesheuvel , Ingo Molnar , x86 , LKML In-Reply-To: <20200406180614.429454-1-nivedita@alum.mit.edu> References: <20200406180614.429454-1-nivedita@alum.mit.edu> MIME-Version: 1.0 Message-ID: <158685245141.28353.8610622208195845083.tip-bot2@tip-bot2> X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The following commit has been merged into the efi/urgent branch of tip: Commit-ID: 105cb9544b161819b7be23a8a8419353a3218807 Gitweb: https://git.kernel.org/tip/105cb9544b161819b7be23a8a8419353a3218807 Author: Arvind Sankar AuthorDate: Thu, 09 Apr 2020 15:04:28 +02:00 Committer: Ingo Molnar CommitterDate: Tue, 14 Apr 2020 08:32:13 +02:00 efi/x86: Move efi stub globals from .bss to .data Commit 3ee372ccce4d ("x86/boot/compressed/64: Remove .bss/.pgtable from bzImage") removed the .bss section from the bzImage. However, while a PE loader is required to zero-initialize the .bss section before calling the PE entry point, the EFI handover protocol does not currently document any requirement that .bss be initialized by the bootloader prior to calling the handover entry. When systemd-boot is used to boot a unified kernel image [1], the image is constructed by embedding the bzImage as a .linux section in a PE executable that contains a small stub loader from systemd together with additional sections and potentially an initrd. As the .bss section within the bzImage is no longer explicitly present as part of the file, it is not initialized before calling the EFI handover entry. Furthermore, as the size of the embedded .linux section is only the size of the bzImage file itself, the .bss section's memory may not even have been allocated. In particular, this can result in efi_disable_pci_dma being true even when it was not specified via the command line or configuration option, which in turn causes crashes while booting on some systems. To avoid issues, place all EFI stub global variables into the .data section instead of .bss. As of this writing, only boolean flags for a few command line arguments and the sys_table pointer were in .bss and will now move into the .data section. [1] https://systemd.io/BOOT_LOADER_SPECIFICATION/#type-2-efi-unified-kernel-images Fixes: 3ee372ccce4d ("x86/boot/compressed/64: Remove .bss/.pgtable from bzImage") Reported-by: Sergey Shatunov Signed-off-by: Arvind Sankar Signed-off-by: Ard Biesheuvel Signed-off-by: Ingo Molnar Link: https://lore.kernel.org/r/20200406180614.429454-1-nivedita@alum.mit.edu Link: https://lore.kernel.org/r/20200409130434.6736-4-ardb@kernel.org --- drivers/firmware/efi/libstub/efistub.h | 2 +- drivers/firmware/efi/libstub/x86-stub.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/firmware/efi/libstub/efistub.h b/drivers/firmware/efi/libstub/efistub.h index cc90a74..67d2694 100644 --- a/drivers/firmware/efi/libstub/efistub.h +++ b/drivers/firmware/efi/libstub/efistub.h @@ -25,7 +25,7 @@ #define EFI_ALLOC_ALIGN EFI_PAGE_SIZE #endif -#ifdef CONFIG_ARM +#if defined(CONFIG_ARM) || defined(CONFIG_X86) #define __efistub_global __section(.data) #else #define __efistub_global diff --git a/drivers/firmware/efi/libstub/x86-stub.c b/drivers/firmware/efi/libstub/x86-stub.c index e02ea51..867a57e 100644 --- a/drivers/firmware/efi/libstub/x86-stub.c +++ b/drivers/firmware/efi/libstub/x86-stub.c @@ -20,7 +20,7 @@ /* Maximum physical address for 64-bit kernel with 4-level paging */ #define MAXMEM_X86_64_4LEVEL (1ull << 46) -static efi_system_table_t *sys_table; +static efi_system_table_t *sys_table __efistub_global; extern const bool efi_is64; extern u32 image_offset;