| From foo@baz Wed Jan 3 18:58:12 CET 2018 |
| From: Hugh Dickins <hughd@google.com> |
| Date: Sun, 3 Sep 2017 19:18:07 -0700 |
| Subject: kaiser: tidied up asm/kaiser.h somewhat |
| |
| From: Hugh Dickins <hughd@google.com> |
| |
| |
| Mainly deleting a surfeit of blank lines, and reflowing header comment. |
| |
| Signed-off-by: Hugh Dickins <hughd@google.com> |
| Acked-by: Jiri Kosina <jkosina@suse.cz> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/x86/include/asm/kaiser.h | 32 +++++++++++++------------------- |
| 1 file changed, 13 insertions(+), 19 deletions(-) |
| |
| --- a/arch/x86/include/asm/kaiser.h |
| +++ b/arch/x86/include/asm/kaiser.h |
| @@ -1,15 +1,17 @@ |
| #ifndef _ASM_X86_KAISER_H |
| #define _ASM_X86_KAISER_H |
| - |
| -/* This file includes the definitions for the KAISER feature. |
| - * KAISER is a counter measure against x86_64 side channel attacks on the kernel virtual memory. |
| - * It has a shodow-pgd for every process. the shadow-pgd has a minimalistic kernel-set mapped, |
| - * but includes the whole user memory. Within a kernel context switch, or when an interrupt is handled, |
| - * the pgd is switched to the normal one. When the system switches to user mode, the shadow pgd is enabled. |
| - * By this, the virtual memory chaches are freed, and the user may not attack the whole kernel memory. |
| +/* |
| + * This file includes the definitions for the KAISER feature. |
| + * KAISER is a counter measure against x86_64 side channel attacks on |
| + * the kernel virtual memory. It has a shadow pgd for every process: the |
| + * shadow pgd has a minimalistic kernel-set mapped, but includes the whole |
| + * user memory. Within a kernel context switch, or when an interrupt is handled, |
| + * the pgd is switched to the normal one. When the system switches to user mode, |
| + * the shadow pgd is enabled. By this, the virtual memory caches are freed, |
| + * and the user may not attack the whole kernel memory. |
| * |
| - * A minimalistic kernel mapping holds the parts needed to be mapped in user mode, as the entry/exit functions |
| - * of the user space, or the stacks. |
| + * A minimalistic kernel mapping holds the parts needed to be mapped in user |
| + * mode, such as the entry/exit functions of the user space, or the stacks. |
| */ |
| #ifdef __ASSEMBLY__ |
| #ifdef CONFIG_KAISER |
| @@ -48,13 +50,10 @@ _SWITCH_TO_KERNEL_CR3 %rax |
| movq PER_CPU_VAR(unsafe_stack_register_backup), %rax |
| .endm |
| |
| - |
| .macro SWITCH_USER_CR3_NO_STACK |
| - |
| movq %rax, PER_CPU_VAR(unsafe_stack_register_backup) |
| _SWITCH_TO_USER_CR3 %rax |
| movq PER_CPU_VAR(unsafe_stack_register_backup), %rax |
| - |
| .endm |
| |
| #else /* CONFIG_KAISER */ |
| @@ -72,7 +71,6 @@ movq PER_CPU_VAR(unsafe_stack_register_b |
| |
| #else /* __ASSEMBLY__ */ |
| |
| - |
| #ifdef CONFIG_KAISER |
| /* |
| * Upon kernel/user mode switch, it may happen that the address |
| @@ -80,7 +78,6 @@ movq PER_CPU_VAR(unsafe_stack_register_b |
| * stored. To change the address space, another register is |
| * needed. A register therefore has to be stored/restored. |
| */ |
| - |
| DECLARE_PER_CPU_USER_MAPPED(unsigned long, unsafe_stack_register_backup); |
| |
| /** |
| @@ -95,7 +92,6 @@ DECLARE_PER_CPU_USER_MAPPED(unsigned lon |
| */ |
| extern int kaiser_add_mapping(unsigned long addr, unsigned long size, unsigned long flags); |
| |
| - |
| /** |
| * kaiser_remove_mapping - unmap a virtual memory part of the shadow mapping |
| * @addr: the start address of the range |
| @@ -104,12 +100,12 @@ extern int kaiser_add_mapping(unsigned l |
| extern void kaiser_remove_mapping(unsigned long start, unsigned long size); |
| |
| /** |
| - * kaiser_initialize_mapping - Initalize the shadow mapping |
| + * kaiser_init - Initialize the shadow mapping |
| * |
| * Most parts of the shadow mapping can be mapped upon boot |
| * time. Only per-process things like the thread stacks |
| * or a new LDT have to be mapped at runtime. These boot- |
| - * time mappings are permanent and nevertunmapped. |
| + * time mappings are permanent and never unmapped. |
| */ |
| extern void kaiser_init(void); |
| |
| @@ -117,6 +113,4 @@ extern void kaiser_init(void); |
| |
| #endif /* __ASSEMBLY */ |
| |
| - |
| - |
| #endif /* _ASM_X86_KAISER_H */ |