[PATCH] x86: Set the NX-compatibility flag in the PE header

Peter Jones posted 1 patch 4 years, 2 months ago
arch/x86/boot/header.S | 4 ++++
1 file changed, 4 insertions(+)
[PATCH] x86: Set the NX-compatibility flag in the PE header
Posted by Peter Jones 4 years, 2 months ago
Following Baskov Evgeniy's "Handle UEFI NX-restricted page tables"
patches, it's safe to set this compatibility flag to let loaders know
they don't need to make special accommodations for kernel to load if
pre-boot NX is enabled.

Signed-off-by: Peter Jones <pjones@redhat.com>
---
 arch/x86/boot/header.S | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S
index 6dbd7e9f74c..0352e4589ef 100644
--- a/arch/x86/boot/header.S
+++ b/arch/x86/boot/header.S
@@ -163,7 +163,11 @@ extra_header_fields:
 	.long	0x200				# SizeOfHeaders
 	.long	0				# CheckSum
 	.word	IMAGE_SUBSYSTEM_EFI_APPLICATION	# Subsystem (EFI application)
+#ifdef CONFIG_DXE_MEM_ATTRIBUTES
+	.word	IMAGE_DLL_CHARACTERISTICS_NX_COMPAT	# DllCharacteristics
+#else
 	.word	0				# DllCharacteristics
+#endif
 #ifdef CONFIG_X86_32
 	.long	0				# SizeOfStackReserve
 	.long	0				# SizeOfStackCommit
-- 
2.35.1
Re: [PATCH] x86: Set the NX-compatibility flag in the PE header
Posted by Ard Biesheuvel 4 years, 2 months ago
On Tue, 29 Mar 2022 at 20:47, Peter Jones <pjones@redhat.com> wrote:
>
> Following Baskov Evgeniy's "Handle UEFI NX-restricted page tables"
> patches, it's safe to set this compatibility flag to let loaders know
> they don't need to make special accommodations for kernel to load if
> pre-boot NX is enabled.
>
> Signed-off-by: Peter Jones <pjones@redhat.com>

Thanks, I've queued this up.

> ---
>  arch/x86/boot/header.S | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S
> index 6dbd7e9f74c..0352e4589ef 100644
> --- a/arch/x86/boot/header.S
> +++ b/arch/x86/boot/header.S
> @@ -163,7 +163,11 @@ extra_header_fields:
>         .long   0x200                           # SizeOfHeaders
>         .long   0                               # CheckSum
>         .word   IMAGE_SUBSYSTEM_EFI_APPLICATION # Subsystem (EFI application)
> +#ifdef CONFIG_DXE_MEM_ATTRIBUTES
> +       .word   IMAGE_DLL_CHARACTERISTICS_NX_COMPAT     # DllCharacteristics
> +#else
>         .word   0                               # DllCharacteristics
> +#endif
>  #ifdef CONFIG_X86_32
>         .long   0                               # SizeOfStackReserve
>         .long   0                               # SizeOfStackCommit
> --
> 2.35.1
>