All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/4] Adjust the padding size for KASLR
@ 2019-11-15 14:49 Masayoshi Mizuma
  2019-11-15 14:49 ` [PATCH v5 1/4] x86/boot: Wrap up the SRAT traversing code into subtable_parse() Masayoshi Mizuma
                   ` (4 more replies)
  0 siblings, 5 replies; 18+ messages in thread
From: Masayoshi Mizuma @ 2019-11-15 14:49 UTC (permalink / raw)
  To: Borislav Petkov, Thomas Gleixner, Ingo Molnar, H. Peter Anvin,
	x86, Baoquan He
  Cc: Masayoshi Mizuma, Masayoshi Mizuma, linux-kernel

From: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com>

The system sometimes crashes while memory hot-adding on KASLR
enabled system. The crash happens because the regions pointed by
kaslr_regions[].base are overwritten by the hot-added memory.

It happens because of the padding size for kaslr_regions[].base isn't
enough for the system whose physical memory layout has huge space for
memory hotplug. kaslr_regions[].base points "actual installed
memory size + padding" or higher address. So, if the "actual + padding"
is lower address than the maximum memory address, which means the memory
address reachable by memory hot-add, kaslr_regions[].base is destroyed by
the overwritten.

  address
    ^
    |------- maximum memory address (Hotplug)
    |                                    ^
    |------- kaslr_regions[0].base       | Hotadd-able region
    |     ^                              |
    |     | padding                      |
    |     V                              V
    |------- actual memory address (Installed on boot)
    |

Fix it by getting the maximum memory address from SRAT and store
the value in boot_param, then set the padding size while KASLR
initializing if the default padding size isn't enough.

Masayoshi Mizuma (4):
  x86/boot: Wrap up the SRAT traversing code into subtable_parse()
  x86/boot: Add max_addr field in struct boot_params
  x86/boot: Get the max address from SRAT
  x86/mm/KASLR: Adjust the padding size for the direct mapping.

 Documentation/x86/zero-page.rst       |  4 ++
 arch/x86/boot/compressed/acpi.c       | 42 ++++++++++++++++----
 arch/x86/include/uapi/asm/bootparam.h |  2 +-
 arch/x86/mm/kaslr.c                   | 57 ++++++++++++++++++++-------
 4 files changed, 82 insertions(+), 23 deletions(-)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2019-12-14 10:09 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-11-15 14:49 [PATCH v5 0/4] Adjust the padding size for KASLR Masayoshi Mizuma
2019-11-15 14:49 ` [PATCH v5 1/4] x86/boot: Wrap up the SRAT traversing code into subtable_parse() Masayoshi Mizuma
2019-12-12 20:18   ` Borislav Petkov
2019-11-15 14:49 ` [PATCH v5 2/4] x86/boot: Add max_addr field in struct boot_params Masayoshi Mizuma
2019-11-15 14:49 ` [PATCH v5 3/4] x86/boot: Get the max address from SRAT Masayoshi Mizuma
2019-11-15 14:49 ` [PATCH v5 4/4] x86/mm/KASLR: Adjust the padding size for the direct mapping Masayoshi Mizuma
2019-11-17  0:42   ` Baoquan He
2019-12-12 20:19   ` Borislav Petkov
2019-12-13 13:28     ` Baoquan He
2019-12-13 14:15       ` Borislav Petkov
2019-12-13 14:54         ` Baoquan He
2019-12-13 16:38           ` Borislav Petkov
2019-12-13 23:29             ` Baoquan He
2019-12-14  7:13               ` Borislav Petkov
2019-12-14 10:07                 ` Baoquan He
2019-12-14  3:33     ` Baoquan He
2019-12-14  7:15       ` Borislav Petkov
2019-12-12 20:17 ` [PATCH v5 0/4] Adjust the padding size for KASLR Borislav Petkov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.