diff options
author | David Woodhouse <dwmw@amazon.co.uk> | 2024-12-05 15:05:19 +0000 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2024-12-06 10:42:01 +0100 |
commit | 5a82223e0743fb36bcb99657772513739d1a9936 (patch) | |
tree | 8073647c0fef894ef7a0830bc6a69402389189ef /arch/x86/kernel | |
parent | 93e489ad7a4694bb2fe8110f5012f85bd3eee65a (diff) | |
download | linux-stable-5a82223e0743fb36bcb99657772513739d1a9936.tar.gz linux-stable-5a82223e0743fb36bcb99657772513739d1a9936.tar.bz2 linux-stable-5a82223e0743fb36bcb99657772513739d1a9936.zip |
x86/kexec: Mark relocate_kernel page as ROX instead of RWX
All writes to the page now happen before it gets marked as executable
(or after it's already switched to the identmap page tables where it's
OK to be RWX).
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Baoquan He <bhe@redhat.com>
Cc: Vivek Goyal <vgoyal@redhat.com>
Cc: Dave Young <dyoung@redhat.com>
Cc: Eric Biederman <ebiederm@xmission.com>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://lore.kernel.org/r/20241205153343.3275139-14-dwmw2@infradead.org
Diffstat (limited to 'arch/x86/kernel')
-rw-r--r-- | arch/x86/kernel/machine_kexec_64.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c index c9fd60f8f806..9232ad1562c8 100644 --- a/arch/x86/kernel/machine_kexec_64.c +++ b/arch/x86/kernel/machine_kexec_64.c @@ -323,7 +323,7 @@ int machine_kexec_prepare(struct kimage *image) __memcpy(control_page, __relocate_kernel_start, reloc_end - reloc_start); - set_memory_x((unsigned long)control_page, 1); + set_memory_rox((unsigned long)control_page, 1); return 0; } @@ -333,6 +333,7 @@ void machine_kexec_cleanup(struct kimage *image) void *control_page = page_address(image->control_code_page); set_memory_nx((unsigned long)control_page, 1); + set_memory_rw((unsigned long)control_page, 1); free_transition_pgtable(image); } |