Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1528035 > unrolled thread
| Started by | David Howells <dhowells@redhat.com> |
|---|---|
| First post | 2016-11-23 01:30 +0100 |
| Last post | 2016-11-23 11:20 +0100 |
| Articles | 4 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH 6/6] efi: Add EFI_SECURE_BOOT bit [ver #2] David Howells <dhowells@redhat.com> - 2016-11-23 01:30 +0100
Re: [PATCH 6/6] efi: Add EFI_SECURE_BOOT bit [ver #2] Lukas Wunner <lukas@wunner.de> - 2016-11-23 10:30 +0100
Re: [PATCH 6/6] efi: Add EFI_SECURE_BOOT bit [ver #2] David Howells <dhowells@redhat.com> - 2016-11-23 11:10 +0100
Re: [PATCH 6/6] efi: Add EFI_SECURE_BOOT bit [ver #2] David Howells <dhowells@redhat.com> - 2016-11-23 11:20 +0100
| From | David Howells <dhowells@redhat.com> |
|---|---|
| Date | 2016-11-23 01:30 +0100 |
| Subject | [PATCH 6/6] efi: Add EFI_SECURE_BOOT bit [ver #2] |
| Message-ID | <sGtBL-60o-1@gated-at.bofh.it> |
From: Josh Boyer <jwboyer@fedoraproject.org>
UEFI machines can be booted in Secure Boot mode. Add a EFI_SECURE_BOOT bit
that can be passed to efi_enabled() to find out whether secure boot is
enabled.
This will be used by the SysRq+x handler, registered by the x86 arch, to find
out whether secure boot mode is enabled so that it can be disabled.
Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
Signed-off-by: David Howells <dhowells@redhat.com>
---
arch/x86/kernel/setup.c | 7 +++++++
include/linux/efi.h | 1 +
2 files changed, 8 insertions(+)
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 9c337b0e8ba7..522915d6de1f 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -1160,6 +1160,13 @@ void __init setup_arch(char **cmdline_p)
io_delay_init();
+#ifdef CONFIG_EFI
+ if (boot_params.secure_boot) {
+ set_bit(EFI_SECURE_BOOT, &efi.flags);
+ pr_info("Secure boot enabled\n");
+ }
+#endif
+
/*
* Parse the ACPI tables for possible boot-time SMP configuration.
*/
diff --git a/include/linux/efi.h b/include/linux/efi.h
index ff01ad6f2823..d95bb9e69974 100644
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
@@ -1066,6 +1066,7 @@ extern int __init efi_setup_pcdp_console(char *);
#define EFI_ARCH_1 7 /* First arch-specific bit */
#define EFI_DBG 8 /* Print additional debug info at runtime */
#define EFI_NX_PE_DATA 9 /* Can runtime data regions be mapped non-executable? */
+#define EFI_SECURE_BOOT 10 /* Are we in Secure Boot mode? */
#ifdef CONFIG_EFI
/*
[toc] | [next] | [standalone]
| From | Lukas Wunner <lukas@wunner.de> |
|---|---|
| Date | 2016-11-23 10:30 +0100 |
| Message-ID | <sGC2m-30l-21@gated-at.bofh.it> |
| In reply to | #1528035 |
On Wed, Nov 23, 2016 at 12:23:12AM +0000, David Howells wrote:
> From: Josh Boyer <jwboyer@fedoraproject.org>
>
> UEFI machines can be booted in Secure Boot mode. Add a EFI_SECURE_BOOT bit
> that can be passed to efi_enabled() to find out whether secure boot is
> enabled.
>
> This will be used by the SysRq+x handler, registered by the x86 arch, to find
> out whether secure boot mode is enabled so that it can be disabled.
>
> Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
> Signed-off-by: David Howells <dhowells@redhat.com>
> ---
>
> arch/x86/kernel/setup.c | 7 +++++++
> include/linux/efi.h | 1 +
> 2 files changed, 8 insertions(+)
>
> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> index 9c337b0e8ba7..522915d6de1f 100644
> --- a/arch/x86/kernel/setup.c
> +++ b/arch/x86/kernel/setup.c
> @@ -1160,6 +1160,13 @@ void __init setup_arch(char **cmdline_p)
>
> io_delay_init();
>
> +#ifdef CONFIG_EFI
> + if (boot_params.secure_boot) {
> + set_bit(EFI_SECURE_BOOT, &efi.flags);
> + pr_info("Secure boot enabled\n");
> + }
> +#endif
> +
Section 20 of Documentation/CodingStyle recommends IS_ENABLED()
instead of #ifdef. Also, CONFIG_EFI_STUB might be more apt than
CONFIG_EFI.
Thanks,
Lukas
> /*
> * Parse the ACPI tables for possible boot-time SMP configuration.
> */
> diff --git a/include/linux/efi.h b/include/linux/efi.h
> index ff01ad6f2823..d95bb9e69974 100644
> --- a/include/linux/efi.h
> +++ b/include/linux/efi.h
> @@ -1066,6 +1066,7 @@ extern int __init efi_setup_pcdp_console(char *);
> #define EFI_ARCH_1 7 /* First arch-specific bit */
> #define EFI_DBG 8 /* Print additional debug info at runtime */
> #define EFI_NX_PE_DATA 9 /* Can runtime data regions be mapped non-executable? */
> +#define EFI_SECURE_BOOT 10 /* Are we in Secure Boot mode? */
>
> #ifdef CONFIG_EFI
> /*
>
[toc] | [prev] | [next] | [standalone]
| From | David Howells <dhowells@redhat.com> |
|---|---|
| Date | 2016-11-23 11:10 +0100 |
| Message-ID | <sGCF4-3u2-47@gated-at.bofh.it> |
| In reply to | #1528237 |
Lukas Wunner <lukas@wunner.de> wrote:
> > +#ifdef CONFIG_EFI
> > + if (boot_params.secure_boot) {
> > + set_bit(EFI_SECURE_BOOT, &efi.flags);
> > + pr_info("Secure boot enabled\n");
> > + }
> > +#endif
> > +
>
> Section 20 of Documentation/CodingStyle recommends IS_ENABLED()
> instead of #ifdef.
The problem is this:
arch/x86/include/asm/bitops.h:75: undefined reference to `efi'
To quote section 20: "... Thus, you still have to use an #ifdef if the code
inside the block references symbols that will not exist if the condition is
not met."
> Also, CONFIG_EFI_STUB might be more apt than CONFIG_EFI.
Other stuff in the same function is contingent on CONFIG_EFI. EFI_STUB is to
do with how the thing can be booted, I think - not whether EFI support is
enabled.
David
[toc] | [prev] | [next] | [standalone]
| From | David Howells <dhowells@redhat.com> |
|---|---|
| Date | 2016-11-23 11:20 +0100 |
| Message-ID | <sGCOK-3Ax-7@gated-at.bofh.it> |
| In reply to | #1528276 |
David Howells <dhowells@redhat.com> wrote:
> > > +#ifdef CONFIG_EFI
> > > + if (boot_params.secure_boot) {
> > > + set_bit(EFI_SECURE_BOOT, &efi.flags);
> > > + pr_info("Secure boot enabled\n");
> > > + }
> > > +#endif
> > > +
> >
> > Section 20 of Documentation/CodingStyle recommends IS_ENABLED()
> > instead of #ifdef.
>
> The problem is this:
>
> arch/x86/include/asm/bitops.h:75: undefined reference to `efi'
>
> To quote section 20: "... Thus, you still have to use an #ifdef if the code
> inside the block references symbols that will not exist if the condition is
> not met."
Okay, I take that back - it does actually work. However, should I follow the
scheme of the rest of the file?
David
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web