diff options
author | Tom Lendacky <thomas.lendacky@amd.com> | 2017-07-28 11:01:17 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2017-07-30 12:09:12 +0200 |
commit | 57bd1905b228f2a14d7506b0302f69f425131e57 (patch) | |
tree | 4cde24dc0f0ac5be3d881ec2c779f35a51963dc8 /arch/x86/include/asm/pgtable_types.h | |
parent | 4e237903f95db585b976e7311de2bfdaaf0f6e31 (diff) | |
download | linux-57bd1905b228f2a14d7506b0302f69f425131e57.tar.gz linux-57bd1905b228f2a14d7506b0302f69f425131e57.tar.bz2 linux-57bd1905b228f2a14d7506b0302f69f425131e57.zip |
acpi, x86/mm: Remove encryption mask from ACPI page protection type
The arch_apei_get_mem_attributes() function is used to set the page
protection type for ACPI physical addresses. When SME is active, the
associated protection type cannot have the encryption mask set since the
ACPI tables live in un-encrypted memory - the kernel will see corrupted
data.
To fix this, create a new protection type, PAGE_KERNEL_NOENC, that is a
'no encryption' version of PAGE_KERNEL, and return that from
arch_apei_get_mem_attributes().
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brijesh Singh <brijesh.singh@amd.com>
Cc: Dave Young <dyoung@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/e1cb9395b2f061cd96f1e59c3cbbe5ff5d4ec26e.1501186516.git.thomas.lendacky@amd.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/include/asm/pgtable_types.h')
-rw-r--r-- | arch/x86/include/asm/pgtable_types.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h index 6c55973ebab8..399261ce904c 100644 --- a/arch/x86/include/asm/pgtable_types.h +++ b/arch/x86/include/asm/pgtable_types.h @@ -211,6 +211,7 @@ enum page_cache_mode { #define __PAGE_KERNEL_NOENC_WP (__PAGE_KERNEL_WP) #define PAGE_KERNEL __pgprot(__PAGE_KERNEL | _PAGE_ENC) +#define PAGE_KERNEL_NOENC __pgprot(__PAGE_KERNEL) #define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO | _PAGE_ENC) #define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC | _PAGE_ENC) #define PAGE_KERNEL_EXEC_NOENC __pgprot(__PAGE_KERNEL_EXEC) |