From: Lukas Wunner <lukas-JFq808J9C/izQB+pC5nmwQ@public.gmane.org>
To: David Howells <dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-security-module-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
keyrings-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 1/6] x86/efi: Allow invocation of arbitrary runtime services
Date: Tue, 22 Nov 2016 11:20:18 +0100 [thread overview]
Message-ID: <20161122102018.GB1552@wunner.de> (raw)
In-Reply-To: <147977469914.6360.17194649697208113702.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
On Tue, Nov 22, 2016 at 12:31:39AM +0000, David Howells wrote:
> Provide the ability to perform mixed-mode runtime service calls for x86 in
> the same way that commit 0a637ee61247bd4bed9b2a07568ef7a1cfc76187 provides
Small nit, checkpatch usually complains that this should be written as
12-character SHA-1 followed by the commit subject, i.e.
0a637ee61247 ("x86/efi: Allow invocation of arbitrary boot services")
Other than that LGTM. Same for patch 2 of this series.
Thanks,
Lukas
> the ability to invoke arbitrary boot services.
>
> Suggested-by: Lukas Wunner <lukas-JFq808J9C/izQB+pC5nmwQ@public.gmane.org>
> Signed-off-by: David Howells <dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> ---
>
> arch/x86/boot/compressed/eboot.c | 1 +
> arch/x86/boot/compressed/head_32.S | 6 +++---
> arch/x86/boot/compressed/head_64.S | 8 ++++----
> arch/x86/include/asm/efi.h | 5 +++++
> 4 files changed, 13 insertions(+), 7 deletions(-)
>
> diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
> index ff01c8fc76f7..c8c32ebcdfdb 100644
> --- a/arch/x86/boot/compressed/eboot.c
> +++ b/arch/x86/boot/compressed/eboot.c
> @@ -32,6 +32,7 @@ static void setup_boot_services##bits(struct efi_config *c) \
> \
> table = (typeof(table))sys_table; \
> \
> + c->runtime_services = table->runtime; \
> c->boot_services = table->boottime; \
> c->text_output = table->con_out; \
> }
> diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
> index fd0b6a272dd5..d85b9625e836 100644
> --- a/arch/x86/boot/compressed/head_32.S
> +++ b/arch/x86/boot/compressed/head_32.S
> @@ -82,7 +82,7 @@ ENTRY(efi_pe_entry)
>
> /* Relocate efi_config->call() */
> leal efi32_config(%esi), %eax
> - add %esi, 32(%eax)
> + add %esi, 40(%eax)
> pushl %eax
>
> call make_boot_params
> @@ -108,7 +108,7 @@ ENTRY(efi32_stub_entry)
>
> /* Relocate efi_config->call() */
> leal efi32_config(%esi), %eax
> - add %esi, 32(%eax)
> + add %esi, 40(%eax)
> pushl %eax
> 2:
> call efi_main
> @@ -264,7 +264,7 @@ relocated:
> #ifdef CONFIG_EFI_STUB
> .data
> efi32_config:
> - .fill 4,8,0
> + .fill 5,8,0
> .long efi_call_phys
> .long 0
> .byte 0
> diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
> index efdfba21a5b2..beab8322f72a 100644
> --- a/arch/x86/boot/compressed/head_64.S
> +++ b/arch/x86/boot/compressed/head_64.S
> @@ -265,7 +265,7 @@ ENTRY(efi_pe_entry)
> /*
> * Relocate efi_config->call().
> */
> - addq %rbp, efi64_config+32(%rip)
> + addq %rbp, efi64_config+40(%rip)
>
> movq %rax, %rdi
> call make_boot_params
> @@ -285,7 +285,7 @@ handover_entry:
> * Relocate efi_config->call().
> */
> movq efi_config(%rip), %rax
> - addq %rbp, 32(%rax)
> + addq %rbp, 40(%rax)
> 2:
> movq efi_config(%rip), %rdi
> call efi_main
> @@ -457,14 +457,14 @@ efi_config:
> #ifdef CONFIG_EFI_MIXED
> .global efi32_config
> efi32_config:
> - .fill 4,8,0
> + .fill 5,8,0
> .quad efi64_thunk
> .byte 0
> #endif
>
> .global efi64_config
> efi64_config:
> - .fill 4,8,0
> + .fill 5,8,0
> .quad efi_call
> .byte 1
> #endif /* CONFIG_EFI_STUB */
> diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h
> index e99675b9c861..2f77bcefe6b4 100644
> --- a/arch/x86/include/asm/efi.h
> +++ b/arch/x86/include/asm/efi.h
> @@ -191,6 +191,7 @@ static inline efi_status_t efi_thunk_set_virtual_address_map(
> struct efi_config {
> u64 image_handle;
> u64 table;
> + u64 runtime_services;
> u64 boot_services;
> u64 text_output;
> efi_status_t (*call)(unsigned long, ...);
> @@ -226,6 +227,10 @@ static inline bool efi_is_64bit(void)
> #define __efi_call_early(f, ...) \
> __efi_early()->call((unsigned long)f, __VA_ARGS__);
>
> +#define efi_call_runtime(f, ...) \
> + __efi_early()->call(efi_table_attr(efi_runtime_services, f, \
> + __efi_early()->runtime_services), __VA_ARGS__)
> +
> extern bool efi_reboot_required(void);
>
> #else
>
WARNING: multiple messages have this Message-ID (diff)
From: Lukas Wunner <lukas@wunner.de>
To: David Howells <dhowells@redhat.com>
Cc: linux-efi@vger.kernel.org, linux-security-module@vger.kernel.org,
keyrings@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/6] x86/efi: Allow invocation of arbitrary runtime services
Date: Tue, 22 Nov 2016 11:20:18 +0100 [thread overview]
Message-ID: <20161122102018.GB1552@wunner.de> (raw)
In-Reply-To: <147977469914.6360.17194649697208113702.stgit@warthog.procyon.org.uk>
On Tue, Nov 22, 2016 at 12:31:39AM +0000, David Howells wrote:
> Provide the ability to perform mixed-mode runtime service calls for x86 in
> the same way that commit 0a637ee61247bd4bed9b2a07568ef7a1cfc76187 provides
Small nit, checkpatch usually complains that this should be written as
12-character SHA-1 followed by the commit subject, i.e.
0a637ee61247 ("x86/efi: Allow invocation of arbitrary boot services")
Other than that LGTM. Same for patch 2 of this series.
Thanks,
Lukas
> the ability to invoke arbitrary boot services.
>
> Suggested-by: Lukas Wunner <lukas@wunner.de>
> Signed-off-by: David Howells <dhowells@redhat.com>
> ---
>
> arch/x86/boot/compressed/eboot.c | 1 +
> arch/x86/boot/compressed/head_32.S | 6 +++---
> arch/x86/boot/compressed/head_64.S | 8 ++++----
> arch/x86/include/asm/efi.h | 5 +++++
> 4 files changed, 13 insertions(+), 7 deletions(-)
>
> diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
> index ff01c8fc76f7..c8c32ebcdfdb 100644
> --- a/arch/x86/boot/compressed/eboot.c
> +++ b/arch/x86/boot/compressed/eboot.c
> @@ -32,6 +32,7 @@ static void setup_boot_services##bits(struct efi_config *c) \
> \
> table = (typeof(table))sys_table; \
> \
> + c->runtime_services = table->runtime; \
> c->boot_services = table->boottime; \
> c->text_output = table->con_out; \
> }
> diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
> index fd0b6a272dd5..d85b9625e836 100644
> --- a/arch/x86/boot/compressed/head_32.S
> +++ b/arch/x86/boot/compressed/head_32.S
> @@ -82,7 +82,7 @@ ENTRY(efi_pe_entry)
>
> /* Relocate efi_config->call() */
> leal efi32_config(%esi), %eax
> - add %esi, 32(%eax)
> + add %esi, 40(%eax)
> pushl %eax
>
> call make_boot_params
> @@ -108,7 +108,7 @@ ENTRY(efi32_stub_entry)
>
> /* Relocate efi_config->call() */
> leal efi32_config(%esi), %eax
> - add %esi, 32(%eax)
> + add %esi, 40(%eax)
> pushl %eax
> 2:
> call efi_main
> @@ -264,7 +264,7 @@ relocated:
> #ifdef CONFIG_EFI_STUB
> .data
> efi32_config:
> - .fill 4,8,0
> + .fill 5,8,0
> .long efi_call_phys
> .long 0
> .byte 0
> diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
> index efdfba21a5b2..beab8322f72a 100644
> --- a/arch/x86/boot/compressed/head_64.S
> +++ b/arch/x86/boot/compressed/head_64.S
> @@ -265,7 +265,7 @@ ENTRY(efi_pe_entry)
> /*
> * Relocate efi_config->call().
> */
> - addq %rbp, efi64_config+32(%rip)
> + addq %rbp, efi64_config+40(%rip)
>
> movq %rax, %rdi
> call make_boot_params
> @@ -285,7 +285,7 @@ handover_entry:
> * Relocate efi_config->call().
> */
> movq efi_config(%rip), %rax
> - addq %rbp, 32(%rax)
> + addq %rbp, 40(%rax)
> 2:
> movq efi_config(%rip), %rdi
> call efi_main
> @@ -457,14 +457,14 @@ efi_config:
> #ifdef CONFIG_EFI_MIXED
> .global efi32_config
> efi32_config:
> - .fill 4,8,0
> + .fill 5,8,0
> .quad efi64_thunk
> .byte 0
> #endif
>
> .global efi64_config
> efi64_config:
> - .fill 4,8,0
> + .fill 5,8,0
> .quad efi_call
> .byte 1
> #endif /* CONFIG_EFI_STUB */
> diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h
> index e99675b9c861..2f77bcefe6b4 100644
> --- a/arch/x86/include/asm/efi.h
> +++ b/arch/x86/include/asm/efi.h
> @@ -191,6 +191,7 @@ static inline efi_status_t efi_thunk_set_virtual_address_map(
> struct efi_config {
> u64 image_handle;
> u64 table;
> + u64 runtime_services;
> u64 boot_services;
> u64 text_output;
> efi_status_t (*call)(unsigned long, ...);
> @@ -226,6 +227,10 @@ static inline bool efi_is_64bit(void)
> #define __efi_call_early(f, ...) \
> __efi_early()->call((unsigned long)f, __VA_ARGS__);
>
> +#define efi_call_runtime(f, ...) \
> + __efi_early()->call(efi_table_attr(efi_runtime_services, f, \
> + __efi_early()->runtime_services), __VA_ARGS__)
> +
> extern bool efi_reboot_required(void);
>
> #else
>
next prev parent reply other threads:[~2016-11-22 10:20 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-16 21:47 [PATCH 00/16] Kernel lockdown David Howells
2016-11-16 21:47 ` David Howells
2016-11-16 21:47 ` [PATCH 01/16] Add the ability to lock down access to the running kernel image David Howells
[not found] ` <147933284407.19316.17886320817060158597.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2016-11-16 22:20 ` Borislav Petkov
2016-11-16 22:20 ` Borislav Petkov
2016-11-16 22:40 ` David Howells
2016-12-25 21:20 ` Pavel Machek
2016-12-25 21:44 ` David Howells
2016-11-16 21:47 ` [PATCH 02/16] efi: Get the secure boot status David Howells
2016-11-17 12:37 ` Lukas Wunner
2016-11-21 11:46 ` David Howells
2016-11-21 19:58 ` Lukas Wunner
2016-11-22 0:31 ` [PATCH 2/6] arm/efi: Allow invocation of arbitrary runtime services David Howells
2016-11-22 0:31 ` [PATCH 3/6] efi: Add SHIM and image security database GUID definitions David Howells
2016-11-22 0:32 ` [PATCH 4/6] efi: Get the secure boot status David Howells
2016-11-22 10:44 ` Lukas Wunner
2016-11-22 14:47 ` David Howells
2016-11-22 20:30 ` Lukas Wunner
2016-11-23 0:02 ` David Howells
[not found] ` <20161122104401.GC1552-JFq808J9C/izQB+pC5nmwQ@public.gmane.org>
2016-11-22 10:49 ` Ard Biesheuvel
2016-11-22 10:49 ` Ard Biesheuvel
2016-11-22 14:52 ` David Howells
2016-11-22 14:52 ` David Howells
[not found] ` <25371.1479826321-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2016-11-22 20:36 ` Lukas Wunner
2016-11-22 20:36 ` Lukas Wunner
[not found] ` <7199.1479826047-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2016-11-22 14:57 ` David Howells
2016-11-22 14:57 ` David Howells
2016-11-22 0:32 ` [PATCH 5/6] efi: Disable secure boot if shim is in insecure mode David Howells
2016-11-22 13:03 ` Lukas Wunner
2016-11-22 0:32 ` [PATCH 6/6] efi: Add EFI_SECURE_BOOT bit David Howells
2016-11-22 13:04 ` Lukas Wunner
[not found] ` <20161117123731.GA11573-JFq808J9C/izQB+pC5nmwQ@public.gmane.org>
2016-11-21 11:42 ` [PATCH 02/16] efi: Get the secure boot status David Howells
2016-11-21 11:42 ` David Howells
[not found] ` <29779.1479728545-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2016-11-21 11:52 ` Ard Biesheuvel
2016-11-21 11:52 ` Ard Biesheuvel
[not found] ` <CAKv+Gu-frVDhzORDRZ6XT+FxewsTgrxhXmM=DqaS6Ns4mJhQ9g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-11-21 12:41 ` David Howells
2016-11-21 12:41 ` David Howells
2016-11-21 13:14 ` Ard Biesheuvel
[not found] ` <CAKv+Gu8Lhm=u97hY1y+Y+Ladk=y7pSVNrow8ML1hQUJ9+74B-w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-11-21 15:17 ` Lukas Wunner
2016-11-21 15:17 ` Lukas Wunner
2016-11-21 15:25 ` Ard Biesheuvel
2016-11-22 0:31 ` [PATCH 1/6] x86/efi: Allow invocation of arbitrary runtime services David Howells
2016-11-22 0:31 ` David Howells
[not found] ` <147977469914.6360.17194649697208113702.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2016-11-22 10:20 ` Lukas Wunner [this message]
2016-11-22 10:20 ` Lukas Wunner
2016-11-22 14:17 ` David Howells
2016-11-22 14:58 ` Joe Perches
[not found] ` <1479826691.1942.11.camel-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>
2016-11-22 15:52 ` David Howells
2016-11-22 15:52 ` David Howells
[not found] ` <24973.1479829961-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2016-11-22 16:25 ` Joe Perches
2016-11-22 16:25 ` Joe Perches
2016-11-22 16:40 ` David Howells
2016-11-22 16:51 ` Joe Perches
2016-11-16 21:47 ` [PATCH 03/16] efi: Disable secure boot if shim is in insecure mode David Howells
2016-11-16 21:47 ` [PATCH 04/16] efi: Lock down the kernel if booted in secure boot mode David Howells
2016-11-16 21:47 ` [PATCH 05/16] efi: Add EFI_SECURE_BOOT bit David Howells
2016-11-17 21:58 ` Ard Biesheuvel
2016-11-18 11:58 ` Josh Boyer
[not found] ` <CA+5PVA6F5qEnuL2UaXS9_fJ217J93cEZDDsz9Y2BPwHXcMdX-A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-11-18 12:10 ` Ard Biesheuvel
2016-11-18 12:10 ` Ard Biesheuvel
[not found] ` <CAKv+Gu_8r3oM-jvvuSiXTzxp0YMEVgc5KkScJ2UhGTaXm28L6w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-11-18 17:28 ` David Howells
2016-11-18 17:28 ` David Howells
2016-11-16 21:48 ` [PATCH 06/16] Add a sysrq option to exit secure boot mode David Howells
2016-11-16 21:48 ` [PATCH 07/16] kexec: Disable at runtime if the kernel is locked down David Howells
2016-11-16 21:48 ` [PATCH 08/16] Copy secure_boot flag in boot params across kexec reboot David Howells
2016-11-16 21:48 ` [PATCH 09/16] hibernate: Disable when the kernel is locked down David Howells
2016-11-16 21:48 ` [PATCH 10/16] PCI: Lock down BAR access " David Howells
2016-11-16 21:48 ` [PATCH 12/16] ACPI: Limit access to custom_method " David Howells
2016-11-16 21:48 ` [PATCH 13/16] asus-wmi: Restrict debugfs interface " David Howells
2016-11-16 21:48 ` [PATCH 14/16] Restrict /dev/mem and /dev/kmem " David Howells
2016-11-16 21:49 ` [PATCH 15/16] acpi: Ignore acpi_rsdp kernel param when the kernel has been " David Howells
[not found] ` <147933283664.19316.12454053022687659937.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2016-11-16 21:48 ` [PATCH 11/16] x86: Lock down IO port access when the kernel is " David Howells
2016-11-16 21:48 ` David Howells
2016-11-16 21:49 ` [PATCH 16/16] x86: Restrict MSR " David Howells
2016-11-16 21:49 ` David Howells
2016-11-16 22:27 ` [PATCH 00/16] Kernel lockdown One Thousand Gnomes
2016-11-16 22:27 ` One Thousand Gnomes
2016-11-21 19:53 ` Ard Biesheuvel
2016-11-30 14:27 ` One Thousand Gnomes
2016-11-21 23:10 ` [PATCH] Lock down drivers that can have io ports, io mem, irqs and dma changed David Howells
2016-11-22 6:12 ` Dominik Brodowski
2016-11-22 6:12 ` Dominik Brodowski
2016-11-23 12:58 ` David Howells
2016-11-23 19:21 ` Dominik Brodowski
[not found] ` <20161123192143.GA482-SGhQLRGLuNwb6pqDj42GsMgv3T4z79SOrE5yTffgRl4@public.gmane.org>
2016-11-24 17:34 ` David Howells
2016-11-24 17:34 ` David Howells
2016-11-24 20:19 ` Dominik Brodowski
2016-11-25 14:49 ` David Howells
[not found] ` <26173.1479769852-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2016-11-28 22:32 ` Corey Minyard
2016-11-28 22:32 ` Corey Minyard
2016-11-29 0:11 ` David Howells
2016-11-29 0:23 ` Corey Minyard
2016-11-29 14:03 ` David Howells
[not found] ` <6973.1480428211-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org>
2016-11-29 14:35 ` Corey Minyard
2016-11-29 14:35 ` Corey Minyard
2016-11-30 14:41 ` One Thousand Gnomes
2016-11-30 14:41 ` One Thousand Gnomes
[not found] ` <20161130144105.2b6be4fe-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org>
2016-11-30 16:25 ` David Howells
2016-11-30 16:25 ` David Howells
2016-11-29 10:40 ` David Howells
2016-11-16 22:28 ` [PATCH 00/16] Kernel lockdown Justin Forbes
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=20161122102018.GB1552@wunner.de \
--to=lukas-jfq808j9c/izqb+pc5nmwq@public.gmane.org \
--cc=dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=keyrings-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-security-module-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.