public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ardb@kernel.org>
To: linux-efi@vger.kernel.org, Ingo Molnar <mingo@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>
Cc: Ard Biesheuvel <ardb@kernel.org>,
	linux-kernel@vger.kernel.org,
	Arvind Sankar <nivedita@alum.mit.edu>,
	Atish Patra <atish.patra@wdc.com>,
	Palmer Dabbelt <palmerdabbelt@google.com>,
	Zou Wei <zou_wei@huawei.com>
Subject: [PATCH 30/33] efi/libstub: Drop __pure getters for EFI stub options
Date: Fri, 24 Apr 2020 15:05:28 +0200	[thread overview]
Message-ID: <20200424130531.30518-31-ardb@kernel.org> (raw)
In-Reply-To: <20200424130531.30518-1-ardb@kernel.org>

The practice of using __pure getter functions to access global
variables in the EFI stub dates back to the time when we had to
carefully prevent GOT entries from being emitted, because we
could not rely on the toolchain to do this for us.

Today, we use the hidden visibility pragma for all EFI stub source
files, which now all live in the same subdirectory, and we apply a
sanity check on the objects, so we can get rid of these getter
functions and simply refer to global data objects directly.

So switch over the remaining boolean variables carrying options set
on the kernel command line.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
---
 drivers/firmware/efi/libstub/arm64-stub.c     |  2 +-
 .../firmware/efi/libstub/efi-stub-helper.c    | 31 ++++---------------
 drivers/firmware/efi/libstub/efi-stub.c       |  6 ++--
 drivers/firmware/efi/libstub/efistub.h        | 12 +++----
 drivers/firmware/efi/libstub/fdt.c            |  2 +-
 drivers/firmware/efi/libstub/file.c           |  2 +-
 drivers/firmware/efi/libstub/x86-stub.c       |  4 +--
 7 files changed, 20 insertions(+), 39 deletions(-)

diff --git a/drivers/firmware/efi/libstub/arm64-stub.c b/drivers/firmware/efi/libstub/arm64-stub.c
index 99b67e88a33b..ba4db35015a3 100644
--- a/drivers/firmware/efi/libstub/arm64-stub.c
+++ b/drivers/firmware/efi/libstub/arm64-stub.c
@@ -55,7 +55,7 @@ efi_status_t handle_kernel_image(unsigned long *image_addr,
 	u32 phys_seed = 0;
 
 	if (IS_ENABLED(CONFIG_RANDOMIZE_BASE)) {
-		if (!nokaslr()) {
+		if (!efi_nokaslr) {
 			status = efi_get_random_bytes(sizeof(phys_seed),
 						      (u8 *)&phys_seed);
 			if (status == EFI_NOT_FOUND) {
diff --git a/drivers/firmware/efi/libstub/efi-stub-helper.c b/drivers/firmware/efi/libstub/efi-stub-helper.c
index 0b1688b10ddc..1c92ac231f94 100644
--- a/drivers/firmware/efi/libstub/efi-stub-helper.c
+++ b/drivers/firmware/efi/libstub/efi-stub-helper.c
@@ -12,34 +12,15 @@
 
 #include "efistub.h"
 
-static bool efi_nochunk;
-static bool efi_nokaslr;
-static bool efi_noinitrd;
-static bool efi_quiet;
-static bool efi_novamap;
+bool efi_nochunk;
+bool efi_nokaslr;
+bool efi_noinitrd;
+bool efi_quiet;
+bool efi_novamap;
+
 static bool efi_nosoftreserve;
 static bool efi_disable_pci_dma = IS_ENABLED(CONFIG_EFI_DISABLE_PCI_DMA);
 
-bool __pure nochunk(void)
-{
-	return efi_nochunk;
-}
-bool __pure nokaslr(void)
-{
-	return efi_nokaslr;
-}
-bool __pure noinitrd(void)
-{
-	return efi_noinitrd;
-}
-bool __pure is_quiet(void)
-{
-	return efi_quiet;
-}
-bool __pure novamap(void)
-{
-	return efi_novamap;
-}
 bool __pure __efi_soft_reserve_enabled(void)
 {
 	return !efi_nosoftreserve;
diff --git a/drivers/firmware/efi/libstub/efi-stub.c b/drivers/firmware/efi/libstub/efi-stub.c
index 8edfd4022803..ee225b323687 100644
--- a/drivers/firmware/efi/libstub/efi-stub.c
+++ b/drivers/firmware/efi/libstub/efi-stub.c
@@ -263,7 +263,7 @@ efi_status_t efi_entry(efi_handle_t handle, efi_system_table_t *sys_table_arg)
 	if (!fdt_addr)
 		pr_efi("Generating empty DTB\n");
 
-	if (!noinitrd()) {
+	if (!efi_noinitrd) {
 		max_addr = efi_get_max_initrd_addr(dram_base, image_addr);
 		status = efi_load_initrd_dev_path(&initrd_addr, &initrd_size,
 						  max_addr);
@@ -294,7 +294,7 @@ efi_status_t efi_entry(efi_handle_t handle, efi_system_table_t *sys_table_arg)
 			   EFI_PROPERTIES_RUNTIME_MEMORY_PROTECTION_NON_EXECUTABLE_PE_DATA);
 
 	/* hibernation expects the runtime regions to stay in the same place */
-	if (!IS_ENABLED(CONFIG_HIBERNATION) && !nokaslr() && !flat_va_mapping) {
+	if (!IS_ENABLED(CONFIG_HIBERNATION) && !efi_nokaslr && !flat_va_mapping) {
 		/*
 		 * Randomize the base of the UEFI runtime services region.
 		 * Preserve the 2 MB alignment of the region by taking a
@@ -367,7 +367,7 @@ void efi_get_virtmap(efi_memory_desc_t *memory_map, unsigned long map_size,
 		size = in->num_pages * EFI_PAGE_SIZE;
 
 		in->virt_addr = in->phys_addr;
-		if (novamap()) {
+		if (efi_novamap) {
 			continue;
 		}
 
diff --git a/drivers/firmware/efi/libstub/efistub.h b/drivers/firmware/efi/libstub/efistub.h
index c1481c5abea4..5ff63230a1f1 100644
--- a/drivers/firmware/efi/libstub/efistub.h
+++ b/drivers/firmware/efi/libstub/efistub.h
@@ -25,11 +25,11 @@
 #define EFI_ALLOC_ALIGN		EFI_PAGE_SIZE
 #endif
 
-extern bool __pure nochunk(void);
-extern bool __pure nokaslr(void);
-extern bool __pure noinitrd(void);
-extern bool __pure is_quiet(void);
-extern bool __pure novamap(void);
+extern bool efi_nochunk;
+extern bool efi_nokaslr;
+extern bool efi_noinitrd;
+extern bool efi_quiet;
+extern bool efi_novamap;
 
 extern const efi_system_table_t *efi_system_table;
 
@@ -50,7 +50,7 @@ extern const efi_system_table_t *efi_system_table;
 #endif
 
 #define pr_efi(msg)		do {			\
-	if (!is_quiet()) efi_printk("EFI stub: "msg);	\
+	if (!efi_quiet) efi_printk("EFI stub: "msg);	\
 } while (0)
 
 #define pr_efi_err(msg) efi_printk("EFI stub: ERROR: "msg)
diff --git a/drivers/firmware/efi/libstub/fdt.c b/drivers/firmware/efi/libstub/fdt.c
index 06d5e7fc8e34..3074a5e27c65 100644
--- a/drivers/firmware/efi/libstub/fdt.c
+++ b/drivers/firmware/efi/libstub/fdt.c
@@ -310,7 +310,7 @@ efi_status_t allocate_new_fdt_and_exit_boot(void *handle,
 	if (status == EFI_SUCCESS) {
 		efi_set_virtual_address_map_t *svam;
 
-		if (novamap())
+		if (efi_novamap)
 			return EFI_SUCCESS;
 
 		/* Install the new virtual address map */
diff --git a/drivers/firmware/efi/libstub/file.c b/drivers/firmware/efi/libstub/file.c
index 27e014ea4459..50aaf15f9ad5 100644
--- a/drivers/firmware/efi/libstub/file.c
+++ b/drivers/firmware/efi/libstub/file.c
@@ -142,7 +142,7 @@ efi_status_t handle_cmdline_files(efi_loaded_image_t *image,
 	if (!load_addr || !load_size)
 		return EFI_INVALID_PARAMETER;
 
-	if (IS_ENABLED(CONFIG_X86) && !nochunk())
+	if (IS_ENABLED(CONFIG_X86) && !efi_nochunk)
 		efi_chunk_size = EFI_READ_CHUNK_SIZE;
 
 	alloc_addr = alloc_size = 0;
diff --git a/drivers/firmware/efi/libstub/x86-stub.c b/drivers/firmware/efi/libstub/x86-stub.c
index 3f132f51ab0f..bddbc103a34b 100644
--- a/drivers/firmware/efi/libstub/x86-stub.c
+++ b/drivers/firmware/efi/libstub/x86-stub.c
@@ -427,7 +427,7 @@ efi_status_t __efiapi efi_pe_entry(efi_handle_t handle,
 		if (status != EFI_SUCCESS)
 			goto fail2;
 
-		if (!noinitrd()) {
+		if (!efi_noinitrd) {
 			status = efi_load_initrd(image, &ramdisk_addr,
 						 &ramdisk_size,
 						 hdr->initrd_addr_max,
@@ -787,7 +787,7 @@ unsigned long efi_main(efi_handle_t handle,
 	 * permit an initrd loaded from the LINUX_EFI_INITRD_MEDIA_GUID device
 	 * path to supersede it.
 	 */
-	if (!noinitrd()) {
+	if (!efi_noinitrd) {
 		unsigned long addr, size;
 
 		status = efi_load_initrd_dev_path(&addr, &size, ULONG_MAX);
-- 
2.17.1


  parent reply	other threads:[~2020-04-24 13:07 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-24 13:04 [GIT PULL 00/33] EFI updates for v5.8 Ard Biesheuvel
2020-04-24 13:04 ` [PATCH 01/33] efi/libstub: Move arm-stub to a common file Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 02/33] efi/libstub: Make initrd file loader configurable Ard Biesheuvel
2020-04-24 13:15   ` Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 03/33] efi/libstub: Unify EFI call wrappers for non-x86 Ard Biesheuvel
2020-05-03 15:09   ` Guenter Roeck
2020-05-03 16:09     ` Arvind Sankar
2020-05-03 16:11       ` Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 04/33] efi/libstub/arm: Make install_memreserve_table static Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 05/33] efi/gop: Remove redundant current_fb_base Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 06/33] efi/gop: Move check for framebuffer before con_out Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 07/33] efi/gop: Get mode information outside the loop Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 08/33] efi/gop: Factor out locating the gop into a function Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 09/33] efi/gop: Slightly re-arrange logic of find_gop Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 10/33] efi/gop: Move variable declarations into loop block Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 11/33] efi/gop: Use helper macros for populating lfb_base Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 12/33] efi/gop: Use helper macros for find_bits Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 13/33] efi/gop: Remove unreachable code from setup_pixel_info Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 14/33] efi/gop: Add prototypes for query_mode and set_mode Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 15/33] efi/gop: Allow specifying mode number on command line Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 16/33] efi/gop: Allow specifying mode by <xres>x<yres> Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 17/33] efi/gop: Allow specifying depth as well as resolution Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 18/33] efi/gop: Allow automatically choosing the best mode Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 19/33] efi/libstub/random: Align allocate size to EFI_ALLOC_ALIGN Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 20/33] efi/libstub/random: Increase random alloc granularity Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 21/33] efi/libstub/arm64: Replace 'preferred' offset with alignment check Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 22/33] efi/libstub/arm64: Simplify randomized loading of kernel image Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 23/33] efi/libstub: Add API function to allocate aligned memory Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 24/33] efi/libstub/arm64: Switch to ordinary page allocator for kernel image Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 25/33] efi/libstub: Move efi_relocate_kernel() into separate source file Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 26/33] efi/arm: Remove __efistub_global annotation Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 27/33] efi/x86: Remove __efistub_global and add relocation check Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 28/33] efi: Kill __efistub_global Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 29/33] efi/libstub: Drop __pure getter for efi_system_table Ard Biesheuvel
2020-04-24 13:05 ` Ard Biesheuvel [this message]
2020-04-24 13:05 ` [PATCH 31/33] efi/libstub/x86: Avoid getter function for efi_is64 Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 32/33] efi: Clean up config table description arrays Ard Biesheuvel
2020-04-24 13:05 ` [PATCH 33/33] efi: Move arch_tables check to caller Ard Biesheuvel
2020-04-25  8:27 ` [GIT PULL 00/33] EFI updates for v5.8 Ingo Molnar
2020-04-25  9:57   ` Ard Biesheuvel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200424130531.30518-31-ardb@kernel.org \
    --to=ardb@kernel.org \
    --cc=atish.patra@wdc.com \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=nivedita@alum.mit.edu \
    --cc=palmerdabbelt@google.com \
    --cc=tglx@linutronix.de \
    --cc=zou_wei@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox