diff options
author | Dave Hansen <dave.hansen@linux.intel.com> | 2018-04-06 16:55:07 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2018-04-09 12:27:33 -0400 |
commit | 6baf4bec02dbc41645c3a5130ee15a8e1d62b80f (patch) | |
tree | 8ebd462bb7ebff7d7db72e28a0bc8a405f2e1c1c | |
parent | 8a57f4849f4fa22ed18a941164a214083fc020a2 (diff) |
x86/espfix: Document use of _PAGE_GLOBAL
The "normal" kernel page table creation mechanisms using
PAGE_KERNEL_* page protections will never set _PAGE_GLOBAL with PTI.
The few places in the kernel that always want _PAGE_GLOBAL must
avoid using PAGE_KERNEL_*.
Document that we want it here and its use is not accidental.
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Arjan van de Ven <arjan@linux.intel.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Hugh Dickins <hughd@google.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Juergen Gross <jgross@suse.com>
Cc: Kees Cook <keescook@google.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Nadav Amit <namit@vmware.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-mm@kvack.org
Link: http://lkml.kernel.org/r/20180406205507.BCF4D4F0@viggo.jf.intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r-- | arch/x86/kernel/espfix_64.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/kernel/espfix_64.c b/arch/x86/kernel/espfix_64.c index e5ec3cafa72e..aebd0d5bc086 100644 --- a/arch/x86/kernel/espfix_64.c +++ b/arch/x86/kernel/espfix_64.c | |||
@@ -195,6 +195,10 @@ void init_espfix_ap(int cpu) | |||
195 | 195 | ||
196 | pte_p = pte_offset_kernel(&pmd, addr); | 196 | pte_p = pte_offset_kernel(&pmd, addr); |
197 | stack_page = page_address(alloc_pages_node(node, GFP_KERNEL, 0)); | 197 | stack_page = page_address(alloc_pages_node(node, GFP_KERNEL, 0)); |
198 | /* | ||
199 | * __PAGE_KERNEL_* includes _PAGE_GLOBAL, which we want since | ||
200 | * this is mapped to userspace. | ||
201 | */ | ||
198 | pte = __pte(__pa(stack_page) | ((__PAGE_KERNEL_RO | _PAGE_ENC) & ptemask)); | 202 | pte = __pte(__pa(stack_page) | ((__PAGE_KERNEL_RO | _PAGE_ENC) & ptemask)); |
199 | for (n = 0; n < ESPFIX_PTE_CLONES; n++) | 203 | for (n = 0; n < ESPFIX_PTE_CLONES; n++) |
200 | set_pte(&pte_p[n*PTE_STRIDE], pte); | 204 | set_pte(&pte_p[n*PTE_STRIDE], pte); |