diff options
author | Ard Biesheuvel <ardb@kernel.org> | 2023-02-01 09:48:12 +0100 |
---|---|---|
committer | Ard Biesheuvel <ardb@kernel.org> | 2023-02-04 09:19:02 +0100 |
commit | cf1d2ffcc6f17b422239f6ab34b078945d07f9aa (patch) | |
tree | a42d8efe5cc90616ea052bbbe84dfaad91b9f5a1 /include/linux/efi.h | |
parent | b0048092f7d3921d56f2c5bfa32062fac5e7500b (diff) | |
download | lwn-cf1d2ffcc6f17b422239f6ab34b078945d07f9aa.tar.gz lwn-cf1d2ffcc6f17b422239f6ab34b078945d07f9aa.zip |
efi: Discover BTI support in runtime services regions
Add the generic plumbing to detect whether or not the runtime code
regions were constructed with BTI/IBT landing pads by the firmware,
permitting the OS to enable enforcement when mapping these regions into
the OS's address space.
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
Diffstat (limited to 'include/linux/efi.h')
-rw-r--r-- | include/linux/efi.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/include/linux/efi.h b/include/linux/efi.h index 9d455d502ac9..df88786b5947 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -584,11 +584,15 @@ typedef struct { #define EFI_INVALID_TABLE_ADDR (~0UL) +// BIT0 implies that Runtime code includes the forward control flow guard +// instruction, such as X86 CET-IBT or ARM BTI. +#define EFI_MEMORY_ATTRIBUTES_FLAGS_RT_FORWARD_CONTROL_FLOW_GUARD 0x1 + typedef struct { u32 version; u32 num_entries; u32 desc_size; - u32 reserved; + u32 flags; efi_memory_desc_t entry[0]; } efi_memory_attributes_table_t; @@ -751,7 +755,7 @@ extern unsigned long efi_mem_attr_table; * argument in the page tables referred to by the * first argument. */ -typedef int (*efi_memattr_perm_setter)(struct mm_struct *, efi_memory_desc_t *); +typedef int (*efi_memattr_perm_setter)(struct mm_struct *, efi_memory_desc_t *, bool); extern int efi_memattr_init(void); extern int efi_memattr_apply_permissions(struct mm_struct *mm, |