From 72ea5cd1dd87434a24ca4a622b5b2ba3bf99dafa Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Fri, 22 Nov 2024 13:34:04 +0000 Subject: [PATCH] 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 --- arch/x86/kernel/machine_kexec_64.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c index c9fd60f8f8065..9232ad1562c88 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); } -- 2.50.1