0237-x86-mm-Map-cpu_entry_area-at-the-same-place-on-4-5-l.patch 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. From 9ec7ffb2871c23d5c0961f0241bd118ca2395edb Mon Sep 17 00:00:00 2001
  2. From: Thomas Gleixner <[email protected]>
  3. Date: Thu, 4 Jan 2018 13:01:40 +0100
  4. Subject: [PATCH 237/241] x86/mm: Map cpu_entry_area at the same place on 4/5
  5. level
  6. MIME-Version: 1.0
  7. Content-Type: text/plain; charset=UTF-8
  8. Content-Transfer-Encoding: 8bit
  9. commit f2078904810373211fb15f91888fba14c01a4acc upstream.
  10. There is no reason for 4 and 5 level pagetables to have a different
  11. layout. It just makes determining vaddr_end for KASLR harder than
  12. necessary.
  13. Fixes: 92a0f81d8957 ("x86/cpu_entry_area: Move it out of the fixmap")
  14. Signed-off-by: Thomas Gleixner <[email protected]>
  15. Cc: Andy Lutomirski <[email protected]>
  16. Cc: Benjamin Gilbert <[email protected]>
  17. Cc: Greg Kroah-Hartman <[email protected]>
  18. Cc: Dave Hansen <[email protected]>
  19. Cc: Peter Zijlstra <[email protected]>
  20. Cc: Thomas Garnier <[email protected]>,
  21. Cc: Alexander Kuleshov <[email protected]>
  22. Link: https://lkml.kernel.org/r/alpine.DEB.2.20.1801041320360.1771@nanos
  23. Signed-off-by: Greg Kroah-Hartman <[email protected]>
  24. Signed-off-by: Fabian Grünbichler <[email protected]>
  25. ---
  26. Documentation/x86/x86_64/mm.txt | 7 ++++---
  27. arch/x86/include/asm/pgtable_64_types.h | 4 ++--
  28. arch/x86/mm/dump_pagetables.c | 2 +-
  29. 3 files changed, 7 insertions(+), 6 deletions(-)
  30. diff --git a/Documentation/x86/x86_64/mm.txt b/Documentation/x86/x86_64/mm.txt
  31. index ddd5ffd31bd0..f7dabe1f01e9 100644
  32. --- a/Documentation/x86/x86_64/mm.txt
  33. +++ b/Documentation/x86/x86_64/mm.txt
  34. @@ -12,8 +12,8 @@ ffffea0000000000 - ffffeaffffffffff (=40 bits) virtual memory map (1TB)
  35. ... unused hole ...
  36. ffffec0000000000 - fffffbffffffffff (=44 bits) kasan shadow memory (16TB)
  37. ... unused hole ...
  38. -fffffe0000000000 - fffffe7fffffffff (=39 bits) LDT remap for PTI
  39. -fffffe8000000000 - fffffeffffffffff (=39 bits) cpu_entry_area mapping
  40. +fffffe0000000000 - fffffe7fffffffff (=39 bits) cpu_entry_area mapping
  41. +fffffe8000000000 - fffffeffffffffff (=39 bits) LDT remap for PTI
  42. ffffff0000000000 - ffffff7fffffffff (=39 bits) %esp fixup stacks
  43. ... unused hole ...
  44. ffffffef00000000 - fffffffeffffffff (=64 GB) EFI region mapping space
  45. @@ -37,7 +37,8 @@ ffd4000000000000 - ffd5ffffffffffff (=49 bits) virtual memory map (512TB)
  46. ... unused hole ...
  47. ffdf000000000000 - fffffc0000000000 (=53 bits) kasan shadow memory (8PB)
  48. ... unused hole ...
  49. -fffffe8000000000 - fffffeffffffffff (=39 bits) cpu_entry_area mapping
  50. +fffffe0000000000 - fffffe7fffffffff (=39 bits) cpu_entry_area mapping
  51. +... unused hole ...
  52. ffffff0000000000 - ffffff7fffffffff (=39 bits) %esp fixup stacks
  53. ... unused hole ...
  54. ffffffef00000000 - fffffffeffffffff (=64 GB) EFI region mapping space
  55. diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm/pgtable_64_types.h
  56. index c92bd73b1e46..0dd48d17a4a1 100644
  57. --- a/arch/x86/include/asm/pgtable_64_types.h
  58. +++ b/arch/x86/include/asm/pgtable_64_types.h
  59. @@ -87,7 +87,7 @@ typedef struct { pteval_t pte; } pte_t;
  60. # define VMALLOC_SIZE_TB _AC(32, UL)
  61. # define __VMALLOC_BASE _AC(0xffffc90000000000, UL)
  62. # define __VMEMMAP_BASE _AC(0xffffea0000000000, UL)
  63. -# define LDT_PGD_ENTRY _AC(-4, UL)
  64. +# define LDT_PGD_ENTRY _AC(-3, UL)
  65. # define LDT_BASE_ADDR (LDT_PGD_ENTRY << PGDIR_SHIFT)
  66. #endif
  67. @@ -109,7 +109,7 @@ typedef struct { pteval_t pte; } pte_t;
  68. #define ESPFIX_PGD_ENTRY _AC(-2, UL)
  69. #define ESPFIX_BASE_ADDR (ESPFIX_PGD_ENTRY << P4D_SHIFT)
  70. -#define CPU_ENTRY_AREA_PGD _AC(-3, UL)
  71. +#define CPU_ENTRY_AREA_PGD _AC(-4, UL)
  72. #define CPU_ENTRY_AREA_BASE (CPU_ENTRY_AREA_PGD << P4D_SHIFT)
  73. #define EFI_VA_START ( -4 * (_AC(1, UL) << 30))
  74. diff --git a/arch/x86/mm/dump_pagetables.c b/arch/x86/mm/dump_pagetables.c
  75. index 12b93d350480..a764bf6f3473 100644
  76. --- a/arch/x86/mm/dump_pagetables.c
  77. +++ b/arch/x86/mm/dump_pagetables.c
  78. @@ -61,10 +61,10 @@ enum address_markers_idx {
  79. KASAN_SHADOW_START_NR,
  80. KASAN_SHADOW_END_NR,
  81. #endif
  82. + CPU_ENTRY_AREA_NR,
  83. #if defined(CONFIG_MODIFY_LDT_SYSCALL) && !defined(CONFIG_X86_5LEVEL)
  84. LDT_NR,
  85. #endif
  86. - CPU_ENTRY_AREA_NR,
  87. #ifdef CONFIG_X86_ESPFIX64
  88. ESPFIX_START_NR,
  89. #endif
  90. --
  91. 2.14.2